我正在尝试执行以下操作:
const obj {
for(i=0;i<data.length;i++){
Key[i]: data[i].description
}
}
(我知道我可能还需要在每一行的末尾添加一个逗号,除了最后一行,但我已经在前一阶段出错了)
JS似乎不允许这样做。还有其他选择吗?谢谢!
答案 0 :(得分:3)
您可以将Object.assign
与spread syntax ...
结合使用,并使用Array#map
映射单个对象,并使用computed property names作为对象。
const obj = Object.assign(...data.map((o, i) => ({ ['Key' + i]: o.description })));
答案 1 :(得分:2)
您似乎正在尝试从密钥数组和数据数组创建对象。
一种干净的方法是使用数组缩减:
const obj = data.reduce((obj, d, i) => {
obj[Key[i]] = d.description;
return obj;
}, {});
,假设您的环境允许,可以进一步简化(请注意,这将是更清晰的代码但效率更低,因为object spread每次都复制整个对象):
const obj = data.reduce((obj, d, i) => ({
...obj,
[Key[i]]: d.description
}), {});
但您也可以使用简单的for
循环:
const obj = {};
for (let i = 0; i < data.length; i++) {
obj[Key[i]] = data[i].description;
}
注意:如果Key.length !== data.length
。