我想将此代码更改为ES6,特别是我想使用Object.assign功能使其不可变。 这就是我得到的
function toggle(arr, obj){
for(var i=0; i<arr.length; i++){
if(arr[i].name ==obj.name){
arr[i].checked=true;
}
return arr;
}
}
var arr = [
{name: "play", checked:false},
{name: "swim", checked:false},
{name: "sing", checked:false}
];
toggle(arr, {name: "play", checked:false});
它所做的就是改变&#34;检查&#34;传递对象的属性从false到true。现在它覆盖了我的原始对象,我想避免它。
这是我到目前为止所做的:
function toggle(arr, obj){
for(var i=0; i<arr.length; i++){
if(arr[i].name ==obj.name){
var newArr = Object.assign({}, arr[i], { arr[i].checked: true});
}
}
}
答案 0 :(得分:2)
您可以通过以下方式执行此操作
var arr = [
{name: "play", checked:false},
{name: "swim", checked:false},
{name: "sing", checked:false}
];
//toggle(arr, {name: "play", checked:false});
arr = arr.map((a) => {
return a.name != "play" ? a : Object.assign(a, {checked : true});
})
console.log(arr);
&#13;