地图是使用Java脚本返回新数组还是修改现有数组? 我在这些示例映射中有一个示例,不应修改当前数组(不起作用),但应修改数组(其工作正常),
let x = [{ 'name': 'a', checked: false },
{ 'name': 'b', checked: true },
{ 'name': 'c', checked: false }];
根据y名称更改x
let y = [{ 'name': 'a', checked: true },
{ 'name': 'b', checked: true },]
地图功能
y.forEach(ele =>{
boss= x.map(item =>{
if(ele.name == item.name){
item.checked = true;
}
return item;
});
});
预期产量
x = [{"name":"a","checked":false},{"name":"b","checked":true},{"name":"c","checked":false}]
和
boss = [{"name":"a","checked":true},{"name":"b","checked":true},{"name":"c","checked":false}]
答案 0 :(得分:1)
您可以通过获取一个空对象来映射新对象,并使用Map
分配实际对象和所需的update属性。
var array = [{ name: 'a', checked: false }, { name: 'b', checked: true }, { name: 'c', checked: false }],
update = [{ name: 'a', checked: true }, { name: 'b', checked: true }],
updateMap = new Map(update.map(({ name, checked }) => [name, { checked }])),
updatedArray = array.map(o => Object.assign({}, o, updateMap.get(o.name)));
console.log(updatedArray);
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }