Изменить ключи объекта и значение - PullRequest
0 голосов
/ 21 мая 2018

У меня есть этот массив объектов из API:

"use strict";

var data = [{
  "OPEN COVER (YES or NO)": "YES"
}, {
  "OPEN COVER (YES or NO)": "NO"
}, {
  "OPEN COVER (YES or NO)": "YES"
}];
var result = [];

data.map(function (item) {
  var fixed = {};
  var keys = Object.keys(item);
  keys.map(function (key) {
    if (key === 'OPEN COVER (YES or NO)') return fixed['open_cover'] = item[key];
  });
  result.push(fixed);
});
console.log(result);

Как мне изменить значение с «ДА» на истину и «НЕТ» на истину?

Ответы [ 4 ]

0 голосов
/ 21 мая 2018

Или как-то так, при условии, что у вас всегда будет фиксированное имя ключа "OPEN COVER (YES or NO)":

"use strict";

var data = [{
  "OPEN COVER (YES or NO)": "YES"
}, {
  "OPEN COVER (YES or NO)": "NO"
}, {
  "OPEN COVER (YES or NO)": "YES"
}];
var result = data.map(function (item) {
 var tempObj = {};
 var key = Object.keys(item)[0];
 var value = item[key] === 'YES';

 tempObj[key] = value;

 return tempObj;
});

console.log(result);
0 голосов
/ 21 мая 2018

Самый простой способ сделать это - установить значение в простой оператор.

fixed['open_cover'] = item[key] === "YES"

Это проверит, равен ли item[key] "YES", и установитваш вывод на true или false.

0 голосов
/ 21 мая 2018

Если бы вы могли использовать функции ES6, используйте map для повторения и возврата нового массива, создавая новый объект с оператором распространения для каждого элемента массива

"use strict";

var data = [{
  "OPEN COVER (YES or NO)": "YES"
}, {
  "OPEN COVER (YES or NO)": "NO"
}, {
  "OPEN COVER (YES or NO)": "YES"
}];

const key = 'OPEN COVER (YES or NO)';

const result = data.map( item => {

  return {
    ...item,
    ...{
        [key]: item[key] === 'YES'
    }
  }
});
console.log(result);

Рабочая скрипка, основанная на первоначальном ответе Chase DeAnda https://jsfiddle.net/xctohpw5/

0 голосов
/ 21 мая 2018

Вы можете легко преобразовать «ДА» в true и «НЕТ» в false, используя троичную форму.Также вы можете использовать forEach вместо map:

"use strict";

var data = [{
  "OPEN COVER (YES or NO)": "YES"
}, {
  "OPEN COVER (YES or NO)": "NO"
}, {
  "OPEN COVER (YES or NO)": "YES"
}];
var result = data.reduce(function(items, item) {
  var fixed = {};
  var keys = Object.keys(item);
  keys.forEach(function(key) {
    if (key === 'OPEN COVER (YES or NO)') {
      return fixed['open_cover'] = item[key] === 'YES';
    }
  });
  items.push(fixed);
  return items;
}, []);
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...