在const对象中循环

时间:2017-07-24 20:27:07

标签: javascript loops object const

我正在尝试执行以下操作:

const obj {
    for(i=0;i<data.length;i++){
       Key[i]: data[i].description
    }
}

(我知道我可能还需要在每一行的末尾添加一个逗号,除了最后一行,但我已经在前一阶段出错了)

JS似乎不允许这样做。还有其他选择吗?谢谢!

2 个答案:

答案 0 :(得分:3)

您可以将Object.assignspread 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

,上面的代码将会中断