假设我可以对以下内容进行硬编码:
const data = [ { a: 0, b: 1}, {a:2,b:3},... ]
但是我将数据存储在一个数组中,我想编写如下内容:
const data = my_arr.map((element,index) => { a:element, b:index});
如何从数组映射中产生这种对象?
答案 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
语句)
答案 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)