2017-09-12 2 views
-2

Ich möchte diesen Code in ES6 ändern, insbesondere möchte ich Object.assign Funktionalität verwenden, um es unveränderlich zu machen. Das ist, was ich habeÄndern Sie den Code in 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}); 

Alles, was es tut, ist es die „geprüft“ Eigenschaft übergebene Objekt von false auf true ändert. Im Moment überschreibt es mein ursprüngliches Objekt, ich möchte es vermeiden.

Das ist, was ich bisher habe:

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

Wir Beiträge entmutigen tun können, die einfach ein Problem aus dem Zusammenhang angeben und erwarte, dass die Gemeinschaft es löst. Vorausgesetzt, Sie haben versucht, es selbst zu lösen und stecken geblieben, könnte es hilfreich sein, wenn Sie Ihre Gedanken geschrieben haben und was Sie nicht herausfinden konnten. Es wird definitiv mehr Antworten auf Ihre Post ziehen. Bis dahin wird über die Frage abgestimmt, ob sie geschlossen/abgelehnt werden soll. – Cerbrus

+0

@Cerbrus danke für das Feedback, ich mochte meine Lösung einfach nicht so sehr, dass ich sie nicht teilte. Ich habe es jetzt – Polina

Antwort

2

Sie es in der folgenden Art und Weise

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

so eine schöne Lösung hinzugefügt! Danke für die Hilfe! @ marvel308 – Polina

Verwandte Themen