【问题标题】:Convert Array to Object with key name使用键名将数组转换为对象
【发布时间】:2021-10-14 08:15:11
【问题描述】:

什么是最好的转换方式:

[2019,2020,2021]

{
  0: {year:2019},
  1: {year:2020},
  2: {year:2021}
}

【问题讨论】:

  • @Barmar 建议的答案并没有安静地回答它,因为最终结果需要是一个对象,而不仅仅是数组的值。
  • 好的,虽然只是简单的修改。
  • 为什么要一个带有数字键的对象而不是数组?

标签: javascript node.js arrays object ecmascript-2018


【解决方案1】:

请试试这个:

a = [2019,2020,2021];
a.reduce((acc, val, idx)=> {acc[idx] = {year: val}; return acc;}, {});

【讨论】:

  • 我们正在从一个数组中创建 1 个对象。所以我们正在减少数组。可能会创建另一个数组。虽然这个问题确实提出了它是否应该是一个数组而不是一个对象的问题。
【解决方案2】:

想到Object.assign()array.map() 的组合:

const array = [2019,2020,2021];

const object = Object.assign({}, array.map(a => ({year: a})));
console.log("object:", object);


const object2 = {}
array.forEach((a, i) => object2[i] = {year: a});
console.log("object2:", object2);

【讨论】:

    猜你喜欢
    • 2019-03-10
    • 2017-07-14
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多