首页 > 解决方案 > 将具有重复键的键值数组转换为具有唯一键和值数组属性的对象数组

问题描述

我有一组键/值对。键有时会重复,并且每个键的值始终是唯一的。我想将每个唯一键压缩为一个对象,这样我就有一个键和一个关联值的数组作为属性。有没有方便的javascript函数来做到这一点?

这个

pairArray = [
{ key: "a", value: "1" },
{ key: "a", value: "2" },
{ key: "b", value: "1" },
{ key: "b", value: "2" },
];

变成

objectArray = [
{ key: "a", values: ["1", "2"] },
{ key: "(", values: ["1", "2"] }
];

标签: javascriptarraysobjectkey-value

解决方案


您可以简单地使用对象Array.reduce()key属性作为地图的键来创建地图,Object.values()在该地图上将为您提供所需的结果:

假设您的预期输出中有错字。您可以尝试以下方法:

const pairArray =  [ { key: "a", value: "1" }, { key: "a", value: "2" }, { key: "b", value: "1" }, { key: "b", value: "2" }, ];

const result = Object.values(pairArray.reduce((acc, {key, value})=>{
  acc[key] = acc[key] || {key, values : []};
  acc[key].values.push(value);
  return acc;
},{}));

console.log(result);


推荐阅读