我想从现有的数组中创建一个对象数组
即[1,2,3]应当变为=>〔{1:1},{2:1},{3:1}〕
下面的代码是我最初的尝试,但结果是[{element:1},{elements:1}
let scores = [1,2,3];
let sr = [];
scores.forEach(element => {
sr.push({ element : 1 });
});
我在";元素";令我惊讶的是,它成功了。
let scores = [1,2,3];
let sr = [];
scores.forEach(element => {
sr.push({ [element] : 1 }); // this works but I have no clue how :(
});
很抱歉这个问题措辞含糊,但我很想知道背后的原因。
当您想要设置动态key
时,就会执行此操作。我建议使用.map
:
const scores = [1,2,3];
const sr = scores.map( element => ({ [element] : 1 }) );
console.log(sr);
so[]在该上下文中解析为表达式(这对我来说一直很奇怪,它不在对象属性名称中((解析为表达式…(,但是,是的,它将var的值分配给键,而不是直接将键定义为"element"(默认值(。它是ES6语法,我不认为它有确切的名称。。。
let sr = scores.map(element => ({ [element] : 1 }));
对于你想做的事情来说也更快。