从数组映射返回对象

时间:2019-02-12 22:16:10

标签: javascript arrays dictionary object

假设我可以对以下内容进行硬编码:

const data = [ { a: 0, b: 1}, {a:2,b:3},... ]

但是我将数据存储在一个数组中,我想编写如下内容:

const data = my_arr.map((element,index) => { a:element, b:index});

如何从数组映射中产生这种对象?

5 个答案:

答案 0 :(得分:2)

您只需要在返回的对象文字周围加上括号即可。

const my_arr = [1,2,3,4,5];
const data = my_arr.map((element, index) => ({ a: element, b:index }));
//                                          ^                       ^    

console.log(data);

原因是JavaScript解析器规则假定{之后的=>是函数体的开始。为了解决这个问题,我们将对象包装在()中(或者,我们可以添加return语句)

在此处了解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Returning_object_literals

答案 1 :(得分:0)

啊,明白了。

匿名对象与作用域运算符发生冲突,因此您需要将对象封装在作用域块中,并通过从那里返回来传递对象:

const data = my_arr.map((element,index) => { return {a:element,b:index}});

答案 2 :(得分:0)

您必须在返回的对象周围添加括号,以使其与简单的块区分开来:

const my_arr = [1, 2, 4, 3, 4];
const data = my_arr.map((element, index) => ({ a: element, b: index }));

console.log(data);

明确退回:

const my_arr = [1, 2, 4, 3, 4];
const data = my_arr.map((element, index) => { return { a: element, b: index }; });

console.log(data);

答案 3 :(得分:0)

我想是一样的

var my_arr = [...Array(5).keys()]

var result = my_arr.map((element,index) => ({ a: element, b: element + 1 }));

console.log('result', result)

答案 4 :(得分:0)

所以,它有效

查看输出:

var results = [];
[...Array(11).keys()].forEach((el) => {
  if (el % 2 === 0) {
    results.push({ a: el, b: el + 1 })
  }
})

console.log('results',results)