在ES6中设置对象数组中键的值?

时间:2018-01-24 14:19:33

标签: javascript ecmascript-6

在ES6中是否有办法将对象数组中所有对象的键值设置为新值。

[
    {title: 'my title', published: false},
    {title: 'news', published: true}, 
    ...
]

例如,将每个项目published设置为true

5 个答案:

答案 0 :(得分:3)

示例中的数组只是一维对象数组。

你可以用clickedBtn和lambda:

做你所要求的

forEach

答案 1 :(得分:1)

使用map

arr = arr.map( s => (s.published = true, s) );

修改

无需设置返回值,只需

arr.map( s => (s.published = true, s) );

就足够了

<强>演示

&#13;
&#13;
var arr = [{
    title: 'my title',
    published: false
  },
  {
    title: 'news',
    published: true
  }
];
arr.map(s => (s.published = true, s));

console.log(arr);
&#13;
&#13;
&#13;

答案 2 :(得分:1)

我会使用循环。

arr表示您的对象数组

var result = []
for (var i = 0; i < arr.length; i++) {
  result.push([arr[i].title, arr[i].published])
}
console.log(result)

这将导致[['my Title', false], ['news', true]]

答案 3 :(得分:0)

如果您不想要循环,可以使用索引进行引用。

    a = [
        {title: 'my title', published: false},
        {title: 'news', published: true}
        ]

a[0].published= true;
a[1].published= true;

或循环

        for (val in a) {
            a[val].published = true;
        }

答案 4 :(得分:0)

您可以将map功能与展开运算符

一起使用

let array = [ { title: 'my title', published: false }, { title: 'news', published: true } ]

array = array.map(t => t.published !== true ? { ...t, published: true } : t)