ES6映射对象数组,以返回具有新键的对象数组[重复]

Posted

技术标签:

【中文标题】ES6映射对象数组,以返回具有新键的对象数组[重复]【英文标题】:ES6 map an array of objects, to return an array of objects with new keys [duplicate] 【发布时间】:2017-03-13 21:21:20 【问题描述】:

我有一个对象数组:

[
    
        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 )

【问题讨论】:

你需要person => (...。换句话说,将对象字面量括在括号中。否则 JS 认为它是一个块的开始。 【参考方案1】:

你只需要将对象包裹在()

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

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

【讨论】:

谢谢!不知道我理解为什么括号是必要的,但它们确实有效。使用 JSX 时,如果我将标记保持在同一行,则不需要括号,所以我想我认为同一行上的对象也是如此。 啊,从帖子来看,这显然是重复的:“否则,花括号将被视为表示函数的主体。”现在这是有道理的。再次感谢。 这也可以,但它本质上只是编写代码的另一种方式,我添加了这个是因为 OP 不理解括号,我在自己解决问题时遇到了这个线程: var result = arr.map((person)=> return value:person.id, text:person.name ; ); 如果不想添加括号,则使用“=”代替“:”。 this.props.people.map(person => value= person.id, text= person.name ) @NitinAgarwal:你确定吗?你的建议对我不起作用。这是有道理的,它没有。我收到一条错误消息,提示未声明“值”和“文本”。

以上是关于ES6映射对象数组,以返回具有新键的对象数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字符串转换为具有重复键的对象到数组

在具有特定键的特定值的数组中查找对象的索引[重复]

将带有值的新键添加到嵌套对象数组中

ObjectMapper 和具有唯一键的数组

es6对象的扩展

ES6 将对象数组映射到数组