javascript - 将具有重复键的键值数组转换为具有唯一键和值数组属性的对象数组
问题描述
我有一组键/值对。键有时会重复,并且每个键的值始终是唯一的。我想将每个唯一键压缩为一个对象,这样我就有一个键和一个关联值的数组作为属性。有没有方便的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"] }
];
解决方案
您可以简单地使用对象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);
推荐阅读
- python - 带有 nginx 静态文件的 Django 无法加载
- css - 有没有另一种方法可以让每个 div 在 flexbox 中保持 33% 的宽度?
- java - 如何在 Eclipse rcp 中以声明方式设置全局动作处理程序?
- tensorflow - 如何在不重新训练之前的 tensorflow 课程的情况下在其他课程上训练模型?
- php - 从对象的数组中调用每个值
- php - 从终端运行 shell 脚本有效,但从 PHP shell_exec 运行时无效
- python - 无法保留内存块,在 python 中导入 json 错误
- stripe-payments - 为什么只保存在源中而不是卡片中的条带卡?
- mysql - 导入脚本时未选择数据库
- java - 后增量替换