ES6 ordnet ein Array von Objekten zu, um ein Array von Objekten mit neuen Schlüsseln zurückzugeben [duplicate]

Lesezeit: 2 Minuten

Ich habe ein Array von Objekten:

[
    {
        id: 1,
        name: 'bill'
    },
    {
        id: 2,
        name: 'ted'
    }
]

Auf der Suche nach einem einfachen Einzeiler zum Zurücksenden:

[
    {
        value: 1,
        text: 'bill'
    },
    {
        value: 2,
        text: 'ted'
    }
]

So kann ich sie mit den richtigen Tasten einfach in ein Reaktions-Dropdown pumpen.

Ich habe das Gefühl, dass diese einfache Lösung funktionieren sollte, aber ich erhalte ungültige Syntaxfehler:

this.props.people.map(person => { value: person.id, text: person.name })

  • Du brauchst person => ({.... Mit anderen Worten: Schließen Sie das Objektliteral in Klammern ein. Andernfalls denkt JS, dass es der Anfang eines Blocks ist.

    Benutzer663031

    31. Oktober 2016 um 18:24 Uhr


Sie müssen nur das Objekt einwickeln ()

var arr = [{
  id: 1,
  name: 'bill'
}, {
  id: 2,
  name: 'ted'
}]

var result = arr.map(person => ({ value: person.id, text: person.name }));
console.log(result)

  • Vielen Dank! Ich bin mir nicht sicher, warum die Klammern notwendig sind, aber sie funktionieren tatsächlich. Wenn ich JSX verwende, sind Klammern nicht erforderlich, wenn ich das Tag in derselben Zeile behalte, also dachte ich, dass dasselbe für ein Objekt in derselben Zeile gelten würde.

    – Ben174

    31. Oktober 2016 um 18:25 Uhr

  • Ah, aus dem Beitrag, dass dies anscheinend ein Duplikat von ist: “Andernfalls werden geschweifte Klammern als Bezeichnung für den Körper der Funktion angesehen.” Das macht jetzt Sinn. Danke noch einmal.

    – Ben174

    31. Oktober 2016 um 18:26 Uhr

  • Dies wird auch funktionieren, aber es ist im Wesentlichen nur eine andere Art, den Code zu schreiben. Ich habe dies hinzugefügt, weil das OP die Klammern nicht verstanden hat, und ich bin auf diesen Thread gestoßen, als ich selbst ein Problem gelöst habe: var result = arr.map (( person)=>{ return {value:person.id, text:person.name }; });

    – ViaTech

    21. Februar 2018 um 23:55 Uhr


  • Wenn Sie die Klammern nicht hinzufügen möchten, verwenden Sie anstelle von “:” “=”. this.props.people.map(person => { value= person.id, text= person.name })

    – Nitin Agarwal

    22. Oktober 2018 um 8:19 Uhr

  • @NitinAgarwal: Bist du sicher? Dein Vorschlag funktioniert bei mir nicht. Und es macht Sinn, dass es das nicht tut. Ich erhalte eine Fehlermeldung, die besagt, dass “Wert” und “Text” nicht deklariert sind.

    – Krisztián Balla

    16. Januar 2019 um 13:28 Uhr


1311360cookie-checkES6 ordnet ein Array von Objekten zu, um ein Array von Objekten mit neuen Schlüsseln zurückzugeben [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy