Javascript 将代码更改为ES6

Javascript 将代码更改为ES6,javascript,ecmascript-6,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", c

我想将此代码更改为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});
功能切换(arr、obj){

对于(var i=0;i您可以通过以下方式进行

var-arr=[
{name:“play”,选中:false},
{name:“swim”,勾选:false},
{name:“sing”,选中:false}
];
//切换(arr,{name:“play”,选中:false});
arr=arr.map((a)=>{
返回a.name!=“播放”?a:Object.assign(a,{checked:true});
})

控制台日志(arr)
我们不鼓励那些只是断章取义地陈述问题的帖子,并希望社区能够解决它。假设你自己试图解决问题,但遇到了问题,如果你写下自己的想法和你想不出来的东西,这可能会有所帮助。这肯定会给你的帖子带来更多的答案。在那之前,这个问题将被投票关闭/否决票。@Cerbrus感谢您的反馈,我只是不太喜欢我的解决方案,所以没有与大家分享。我现在添加了一个如此漂亮的解决方案!谢谢您的帮助!@marvel308
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});
      }

    }
  }