javascript - 需要一种有效的方法在 javascript 中对对象数组进行分组
问题描述
有没有办法通过引用数组中对象的某个值来对对象数组进行分组
假设我确实有一个名为的数组
a=[
{name: "abc", address: "xxx"}
{name: "def", address: "yyy"}
{name: "xyz", address: "xyz"}
{name: "abc", address1: "123"}
{name: "def", address1: "456"}
]
我需要将同名的地址添加到一个对象中,新的数组应该如下所示
b =[
{name:"abc", address: "xxx", address1: "123"}
{name:"def", address: "yyy", address1: "456"}
{name: "xyz", address: "xyz"}
]
解决方案
您可以使用reduce
按名称分组的功能Object.values
和提取分组对象的功能。
let a = [{name: "abc", address: "xxx"},{name: "def", address: "yyy"},{name: "xyz", address: "xyz"},{name: "abc", address1: "123"},{name: "def", address1: "456"}],
result = Object.values(a.reduce((a, {name, ...rest}) => {
a[name] = Object.assign(a[name] || {name}, rest);
return a;
}, Object.create(null)));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- flutter - Flutter:如何对齐容器内的小部件
- javascript - 解析 JSON 时将 jQuery 替换为 vanilla JS,以及其他改进
- java - 如何动态地从 JSON 文件中获取数据
- ansible - 从变量集构建的 Ansible 循环
- node.js - Node.js protobuf 包括
- angular - 类型“TypedAction”上不存在属性“有效负载”。我如何从ngrx 效果访问action.payload?
- python - 通过 python 将 csv 文件插入 MySQL。运行但数据未填充到表中
- node.js - React - 使用上下文传递数组变量,但是当有更新时,组件接收数组变量不会重新渲染
- android - 完成 Kotlin 中的异步调用列表
- javascript - 动漫交错乱序?