2016-08-02 22 views
1

Diese Funktion durchläuft ein Array von Objekten und übernimmt ein Objekt als zweiten Parameter.ES6 Implementierung dieser Funktion?

Es wird eine Schleife durch das Array von Objekten durchlaufen, wobei es durch das Objekt ersetzt wird, das als zweites Argument übergeben wird, wenn der Wert firstname übereinstimmt.

Ich bin sicher, es gibt eine bessere Möglichkeit, diese Funktion mit ES6 Spread-Operator zu implementieren, aber ich habe Probleme bei der Implementierung.

const foo = (arr, obj) => { 
 
    const tempArray = arr.map((item, i) => { 
 
    if (arr[i].name === obj.name) { 
 
     return obj 
 
    } else { 
 
     return arr[i] 
 
    } 
 
    }) 
 
    return tempArray 
 
} 
 

 
const arrOfObjx = [ 
 
    { 
 
     "name": "Joe", 
 
     "favMovie": "Rambo" 
 
    }, 
 
    { 
 
     "name": "Jane", 
 
     "favMovie": "The Matrix" 
 
    }, 
 
    { 
 
     "name": "John", 
 
     "favMovie": "Star Wars" 
 
    } 
 
] 
 

 
const newJoe = { 
 
    "name": "Joe", 
 
    "favMovie": "ROCKY" 
 
} 
 

 
console.log(foo(arrOfObjx, newJoe))

Antwort

2

Nein, es gibt keinen Anwendungsfall für die Verbreitung Betreiber Hier. Die Vereinfachungen zu machen, sind in Fallenlassen der tempArray variabel und in item anstelle von arr[i]:

function foo(arr, obj) { 
    return arr.map((item, i) => { 
    if (item.name === obj.name) { 
     return obj 
    } else { 
     return item 
    } 
    }); 
} 

die Sie weiter

verkürzen
const foo = (arr, obj) => 
    arr.map(item => 
    item.name === obj.name ? obj : item 
); 
1

Probieren Sie Artikel mit

const tempArray = arr.map((item, i) => { 
    if (item.name === obj.name) { 
     return obj 
    } else { 
     return item 
    } 
}) 

Ich glaube, Sie selbst schreiben kann es als

const tempArray = arr.map((item, i) => { 
    return (item.name === obj.name ? obj : item) 
})