更改对象键和值

时间:2018-05-21 20:04:16

标签: javascript ecmascript-6

我有一个来自api的对象数组:



>>> myListOfPeople = [{'ID': 0, 'Name': 'Mary', 'Age': 25}, {'ID': 1, 'Name': 'John', 'Age': 28}]
>>> 
>>> min(myListOfPeople, key=lambda x: x["Age"])
{'ID': 0, 'Name': 'Mary', 'Age': 25}
>>> 




如何更改" YES"的值?真实的"否"真的吗?

4 个答案:

答案 0 :(得分:3)

您可以使用三元素轻松将“是”转换为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);

答案 1 :(得分:1)

如果您可以使用ES6功能,请使用map迭代并返回一个新数组,为每个数组项创建一个带扩展运算符的新对象

        if '\t' in a:
            a= a.replace('\n', '<br>', 1)
            a= a.replace('\n', '</li>')
            tabs = get_tabs(gp_ln)
            tabs.sort(reverse=True)
            for tab in tabs:
                a= a.replace(tab, '\n<ul style="display:block; list-style-type:none; line-height: 17px; '
                                           'font: 13px \'Times New Roman\';">\n<li>', 1)
                a= a.replace(tab, '\n<li>')

            a+= '</li>'
            a+= '</ul>' * len(tabs) + '\n'

根据Chase DeAnda的原始答案https://jsfiddle.net/xctohpw5/

工作小提琴

答案 2 :(得分:0)

或类似的东西,假设您将始终拥有固定的密钥名称"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);

答案 3 :(得分:-1)

最简单的方法是将值设置为简单的语句。

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

这将检查item[key]是否等于"YES"并将您的输出设置为truefalse