ES6映射一个对象数组,以返回带有新键的对象数组

Ben*_*174 117 javascript ecmascript-6

我有一个对象数组:

[
    {
        id: 1,
        name: 'bill'
    },
    {
        id: 2,
        name: 'ted'
    }
]
Run Code Online (Sandbox Code Playgroud)

寻找一个简单的单行返回:

[
    {
        value: 1,
        text: 'bill'
    },
    {
        value: 2,
        text: 'ted'
    }
]
Run Code Online (Sandbox Code Playgroud)

因此,我可以使用正确的键轻松地将它们泵入反应下拉列表中.

我觉得这个简单的解决方案应该可行,但我得到的语法错误无效:

this.props.people.map(person => { value: person.id, text: person.name })
Run Code Online (Sandbox Code Playgroud)

Nen*_*car 283

你只需要包装对象 ()

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

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

  • 啊,从帖子中可以看出这显然是一个副本:"否则花括号将被视为表示函数的主体." 这是有道理的.再次感谢. (18认同)
  • 谢谢!我不确定我明白为什么括号是必要的,但它们确实有效。使用 JSX 时,如果我将标签保留在同一行上,则不需要括号,所以我想我认为同一行上的对象也是如此。 (4认同)
  • 这也会起作用,但它实际上只是编写代码的一种不同方式,我添加了这个因为OP不理解括号,我在遇到问题时遇到了这个问题:var result = arr.map(( person)=> {return {value:person.id,text:person.name};}); (2认同)
  • @NitinAgarwal:你确定吗?你的建议对我不起作用。这是有道理的,它没有。我收到一条错误消息,指出未声明“值”和“文本”。 (2认同)