2016-10-31 90 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

哇,太棒了! –