将代码更改为ES6

时间:2017-09-12 11:15:20

标签: javascript ecmascript-6

我想将此代码更改为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});
      }

    }
  }

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式执行此操作

&#13;
&#13;
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;
&#13;
&#13;