使用map失败将数组转换为对象数组

时间:2017-06-28 07:06:56

标签: javascript reactjs ecmascript-6

const arr = ["a","b","c"]

arr.map(obj => {obj.id: obj})

我希望arr可以成为[{id:"a"},{id:"b"},{id:"c"}]但是我的地图中的obj.id出错了,我的错误是什么?

2 个答案:

答案 0 :(得分:3)

您可以使用括号作为返回对象,只使用变量id,该变量解析为具有键id的对象。



let arr = ["a", "b", "c"],
    result = arr.map(id => ({ id }));

console.log(result);




来自MDN Returning object literals

  

返回对象文字

     

请记住,使用简明语法params => {object:literal}返回对象文字将无法按预期工作。

var func = () => { foo: 1 };               
// Calling func() returns undefined!

var func = () => { foo: function() {} };   
// SyntaxError: function statement requires a name
     

这是因为braces({})中的代码被解析为一系列语句(即foo被视为标签,而不是对象文字中的键)。

     

请记住将对象文字包装在括号中。

var func = () => ({foo: 1});

答案 1 :(得分:0)

返回对象时应使用额外的括号。所以你的代码将是

const arr = ["a", "b", "c"]
const a = arr.map((obj, i) => ({
  [i]: obj
}))

console.log(a)