📜  javascript 数组按 id 分组 - Javascript (1)

📅  最后修改于: 2023-12-03 14:42:35.073000             🧑  作者: Mango

JavaScript 数组按 id 分组

在 JavaScript 中,我们经常需要对数组进行分组操作。本篇文章将介绍如何使用 JavaScript 将数组按照指定的 id 进行分组。

问题描述

假设我们有一个包含多个对象的数组,每个对象都有一个 id 属性。我们希望将这个数组按照 id 分组,并以 id 作为键名,将相同 id 的对象数组合并到同一个键值中。

解决方案

我们可以使用 JavaScript 的 reduce 方法实现对数组的分组操作。

const data = [
  { id: '1', name: 'Alice' },
  { id: '2', name: 'Bob' },
  { id: '1', name: 'Charlie' },
  { id: '3', name: 'David' },
];

const groups = data.reduce((acc, cur) => {
  acc[cur.id] = acc[cur.id] || [];
  acc[cur.id].push(cur);
  return acc;
}, {});

console.log(groups);

上面的代码将输出以下结果:

{
  "1": [
    { "id": "1", "name": "Alice" },
    { "id": "1", "name": "Charlie" }
  ],
  "2": [
    { "id": "2", "name": "Bob" }
  ],
  "3": [
    { "id": "3", "name": "David" }
  ]
}

我们使用 reduce 方法对原数组进行遍历,如果当前对象的 id 还没有在结果对象中出现过,我们就创建一个新的数组并将其作为键值的初始值。然后,将当前对象添加到该数组中。最后,将结果对象返回。

这样,我们就可以得到一个以 id 为键名的对象,其中每个键值都是一个包含相同 id 对象的数组。

总结

本文介绍了如何使用 JavaScript 数组的 reduce 方法实现对数组按 id 进行分组的操作。这种方式简单有效,代码量也很少,是开发中实用的技巧之一。