Javascript 将具有重复键的键值数组转换为具有唯一键和值数组属性的对象数组

Javascript 将具有重复键的键值数组转换为具有唯一键和值数组属性的对象数组,javascript,arrays,object,key-value,Javascript,Arrays,Object,Key Value,我有一个键/值对数组。键有时是重复的,每个键的值总是唯一的。 我想将每个唯一的键压缩到一个对象,这样我就有了一个键和一个关联值数组作为属性。 有没有什么方便的javascript函数可以做到这一点 这个 变成 objectArray = [ { key: "a", values: ["1", "2"] }, { key: "(", values: ["1", "2"] } ]; 您只需使用对象的key属性作为映射的键,使用Array.reduce()创建映射,该映射上的object.value

我有一个键/值对数组。键有时是重复的,每个键的值总是唯一的。 我想将每个唯一的键压缩到一个对象,这样我就有了一个键和一个关联值数组作为属性。 有没有什么方便的javascript函数可以做到这一点

这个

变成

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

您只需使用对象的
key
属性作为映射的键,使用
Array.reduce()
创建映射,该映射上的
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,值:[]};
acc[key].values.push(值);
返回acc;
},{}));
控制台日志(结果)您可以使用
Map()
获得所需的输出:
let数据=[
{键:“a”,值:“1”},
{键:“a”,值:“2”},
{键:“b”,值:“1”},
{键:“b”,值:“2”},
];
let reducer=arr=>{
设map=newmap();
arr.forEach({key:k,value:v})=>{
设values=map.get(k)| |[];
推送(v);
map.set(k,值);
});
返回[…map.entries()].map(([k,v])=>({key:k,values:v}));
};

console.log(reducer(数据))那么,你尝试了什么?编辑你的问题并向我们展示你尝试了什么。删除了我的答案,因为与你的答案相同。。虽然尚未复制;)
objectArray = [
{ key: "a", values: ["1", "2"] },
{ key: "(", values: ["1", "2"] }
];