Javascript map函数:向对象添加新键和值

时间:2018-03-14 09:19:36

标签: javascript arrays

我有像这样的JSON数组

$table->tinyInteger('actif')->nullable();

我想为现有数组中的每个对象添加一个新密钥(例如:var array= [{id:1,name:'foo'},{id:2,name:'bar'}]

预期产出:

isApproved

我使用map函数来实现这个

var array= [{id:1,name:'foo',isApproved:true},{id:2,name:'bar',isApproved:true}] 

但这不适合我

6 个答案:

答案 0 :(得分:7)

你真的很亲密。你这里不需要索引。地图遍历数组的每个元素,因此'e'将是数组中的每个对象。

var array= [{id:1,name:'foo'},{id:2,name:'bar'}];

array.map(function(e){
     e.isApproved = true;
});
          
console.log(array);

答案 1 :(得分:1)

试试这个,你不需要索引:

var array= [{id:1,name:'foo'},{id:2,name:'bar'}];

array.map(value => value.isApproved = true);
console.log(array)

答案 2 :(得分:1)

使用此代码,您不会改变数组中的对象

const arr = [{id:1,name:'foo'},{id:2,name:'bar'}];
const mapped = arr.map(element => Object.assign(element, {isApproved: true})

更多新方法将使用传播运营商:

const arr = [{id:1,name:'foo'},{id:2,name:'bar'}];
const mapped = arr.map(element => ({isApproved: true ,...element}))

片段

const arr = [{id:1,name:'foo'},{id:2,name:'bar'}];
    const mapped = arr.map(element => ({isApproved: true ,...element}))


console.log(mapped)

答案 3 :(得分:0)

e[index]没有意义,因为此index适用于您正在迭代的array

将属性直接设置为e

array.map(function(e,index){
     e.isApproved = true; 
}

答案 4 :(得分:0)

在地图中使用实际项目“e”

Map还为您提供了更改每个元素并将其返回到新数组的工具。如果您不希望当前数组改变其状态而不需要修改相同数组的形式,这可能很有用。

检查此代码:

var array= [{id:1,name:'foo'},{id:2,name:'bar'}];

var modifiedArray = array.map(function(e,index){
    return Object.assign({isApproved:true},e);
});

console.log(array);
console.log(modifiedArray);

输出:

//array
[{id: 1, name: "foo"},
{id: 2, name: "bar"}]

//modifiedArray
[{isApproved: true, id: 1, name: "foo"},
{isApproved: true, id: 2, name: "bar"}]

答案 5 :(得分:-1)

<script>

var array= [{id:1,name:'foo'},{id:2,name:'bar'}]
array.forEach(function(e,index){
     e.isApproved= true;
})
console.log(array);

</script>

您可以使用forEach而不是map。