"[]"如何在此代码片段中工作?这是 ES6 的功能吗?



我想从现有的数组中创建一个对象数组

即[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 }));

对于你想做的事情来说也更快。

相关内容

最新更新