2017-12-18 2 views
0

Ich sehe wirklich nicht, wo das falsch läuft. Ich habe Beiträge dieses speziellen Beispiels von O'Reilly's Learning React von Banks & Porcello gesehen. Die Posts scheinen jedoch gut zu funktionieren, aber mein Beispiel nicht. Wenn ich einen Tippfehler habe, sehe ich es nicht. Wo ist mein Fehler? Ich weiß nicht, warum ich einen Null-String-Wert anstelle von „HB Woodlawn“ getWarum funktioniert meine map() mit Spread-Operator nicht?

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <meta name="viewport" 
     content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 
    <meta http-equiv="X-UA-Compatible" content="ie=edge"> 
    <title></title> 
    <script src="https://unpkg.com/[email protected]/babel.min.js"></script> 
</head> 
<body> 

    <script type="text/babel"> 

    // Editing one object in an array of objects 

    let schools = [ 
     {name: 'Yorktown'}, 
     {name: 'Stratford'}, 
     {name: 'Washington & Lee'}, 
     {name: 'Wakefield'} 
    ]; 

    const editName = (oldName, newName, arr) => 
     arr.map(item => { 
     if (item.name === oldName) { 
      return { 
      ...item, 
      name 
      } 
     } 
     else { 
      return item 
     } 
     }); 

    let updatedSchools = editName('Stratford', 'HB Woodlawn', schools); 

    console.log(updatedSchools[1]); // name: "" 
    console.log(schools[1]); // name: "Stratford" 

    </script> 

</body> 
</html> 
+0

Hinweis: '...' ist kein Operator. (Und bevor jemand es sagt: Ignoriere die URL auf der MDN-Seite, es war ein Fehler von der Person, die die Seite erstellt hat.) –

+0

Ähmm, '...' ist Spread-Operator richtig? – illiteratewriter

Antwort

1
let schools = [ 
    {name: 'Yorktown'}, 
    {name: 'Stratford'}, 
    {name: 'Washington & Lee'}, 
    {name: 'Wakefield'} 
]; 

const editName = (oldName, newName, arr) => 
    arr.map(item => { 
    if (item.name === oldName) { 
     return { 
     ...item, 
     name: newName 
     } 
    } 
    else { 
     return item 
    } 
    }); 

let updatedSchools = editName('Stratford', 'HB Woodlawn', schools); 

console.log(updatedSchools[1]); // name: "" 
console.log(schools[1]); // name: "Stratford" 

Sie nicht den neuen Wert für den Namen hinzugefügt hatten, sondern es war leer geblieben. Hinzugefügt name:newName

+0

Wenn Ihnen die Antwort gefallen hat, klicken Sie auf das Häkchen. Vielen Dank. – illiteratewriter

Verwandte Themen