我有像这样的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}]
但这不适合我
答案 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。