2017-09-12 1 views
-2

이 코드를 ES6으로 변경하고 싶습니다. 특히 Object.assign 기능을 사용하여 불변으로 만들고 싶습니다. 이 내가이하는 모든 것이 거짓에서 참으로 전달 된 객체의 "선택"속성을 변경입니다코드를 ES6으로 변경하십시오.

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}); 

있어 것입니다. 지금은 원래 객체를 덮어 씁니다. 나는 그것을 피하고 싶습니다.

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

우리는 단순히 상황에서 문제를 명시 게시물을 억제 다음과 같은 방법으로 작업을 수행 할 수 있습니다

내가 지금까지 무엇을 가지고 , 그리고 공동체가 그것을 해결할 것을 기대하십시오. 자네가 해결하려고 노력하고 붙어있어 보았다면, 네 생각을 적어두고 알아낼 수없는 것이 도움이 될지도 모른다. 그것은 확실히 귀하의 게시물에 대한 더 많은 답변을 그릴 것입니다. 그때까지 질문은 닫히거나/downvoted 것으로 투표 될 것입니다. – Cerbrus

+0

@Cerbrus 의견을 보내 주셔서 감사합니다. 전 솔루션을별로 좋아하지 않아서 공유하지 않았습니다. 나는 지금 – Polina

답변

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);

+0

그런 아름다운 해결책을 추가했다! 도와 주셔서 감사합니다! @ marvel308 – Polina

관련 문제