2016-10-31 89 views
11

我有對象的數組:ES6映射對象的數組,返回對象的數組新的密鑰

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

尋找一個簡單的一行返回:

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

所以我可以用適當的按鍵輕鬆地將它們泵入反應下拉列表。

我覺得像這樣的簡單的解決辦法應該工作,但我發現無效語法錯誤:

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

你需要'person =>({...'。換句話說,將對象字面值包含在parens中,否則JS會認爲它是塊的開始部分 –

回答

29

你只需要包裝對象()

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

謝謝!不知道我明白爲什麼括號是必要的,但確實有效。當使用JSX時,如果我將標記放在同一行上,不需要使用括號,所以我猜想同一行上的對象應該是相同的。 – Ben174

+0

啊,從帖子上看,這顯然是一個副本:「否則大括號將被視爲表示該函數的身體。」這是有道理的。再次感謝。 – Ben174

+0

哇,太棒了! –