首页 > 解决方案 > 使用数组中的键值对创建对象

问题描述

有这个输入数组:

const myArray = [{value: "test"}, {value: "abc"}, {value: "xyz"}];

期望的结果是这样的:result = { "value1": "test", "value2": "abc", "value3": "xyz" };

我试过这样做,但它返回一个空对象:{undefined: ""}

const result = myArray.reduce((agg, item) => {
  agg[item.key] = item.value;
  return agg;
}, {})

有任何想法吗?

标签: javascriptarraysobjectecmascript-6reduce

解决方案


您可以使用Object.keys读取键的名称并使用array.reduce的第三个参数来获取当前处理的项目的索引。

const myArray = [{value: "test"}, {value: "abc"}, {value: "xyz"}];
//the desired result is this: result = { "value1": "test", "value2": "abc", "value3": "xyz" };



const result = myArray.reduce((agg, item, index) => {
  agg[Object.keys(item)[0] + (index + 1)] = item.value;
  return agg;
}, {})

console.log(result);


推荐阅读