2016-10-31 3 views
11

Ich habe ein Array von Objekten zurück:ES6 ein Array von Objekten, Karte ein Array von Objekten mit neuen Schlüsseln

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

für eine einfache Einzeiler Blick zurück:

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

Also kann ich sie einfach mit den richtigen Tasten in ein React Drop-Down pumpen.

Ich fühle mich wie diese einfache Lösung sollte funktionieren, aber ich bin immer ungültige Syntaxfehler:

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

Sie brauche 'person => ({...'. Mit anderen Worten, lege das Objekt literal in parens ein. Ansonsten denkt JS, dass es der Anfang eines Blocks ist. –

Antwort

29

Sie müssen nur Objekt wickeln in ()

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

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

+0

Danke! Nicht sicher, verstehe ich, warum die Klammern notwendig sind, aber sie funktionieren tatsächlich. Wenn ich JSX verwende, wenn ich das Tag in der gleichen Zeile halte, sind keine Klammern erforderlich, also denke ich, dass dasselbe für ein Objekt in derselben Zeile wäre. – Ben174

+0

Ah, aus dem Post, dass dies offenbar ein Duplikat von: "Ansonsten werden geschweifte Klammern berücksichtigt, um den Körper der Funktion zu bezeichnen." Das macht jetzt Sinn. Danke noch einmal. – Ben174

+0

Wow, das ist großartig! –

Verwandte Themen