在 JavaScript 中根据元素对数组的数组进行分组

javascriptweb developmentfront end technologyobject oriented programming更新于 2026/2/3 17:48:17

假设,我们有一个像这样的数字数组的数组 −

const arr = [[1, 45], [1, 34], [1, 49], [2, 34], [4, 78], [2, 67], [4, 65]];

每个子数组必须严格包含两个元素。我们需要编写一个函数来构造一个新数组,其中所有具有相似第一个值的子数组的第二个元素都分组在一起。

因此,对于上面的数组,输出应类似于 −

const output = [
   [45, 34, 49],
   [34, 67],
   [78, 65]
];

我们可以利用 Array.prototype.reduce() 方法,该方法借助 Map() 来构造所需的数组。

因此,让我们编写该函数的代码 −

示例

其代码为 −

const arr = [[1, 45], [1, 34], [1, 49], [2, 34], [4, 78], [2, 67], [4, 65]];
const constructSimilarArray = (arr = []) => {
   const creds = arr.reduce((acc, val) => {
      const { map, res } = acc;
      if(!map.has(val[0])){
         map.set(val[0], res.push([val[1]]) - 1);
      }else{
         res[map.get(val[0])].push(val[1]);
      };
      return { map, res };
   }, {
      map: new Map(),
      res: []
   });
   return creds.res;
};
console.log(constructSimilarArray(arr));

输出

控制台中的输出将是 −

[ [ 45, 34, 49 ], [ 34, 67 ], [ 78, 65 ] ]

相关文章


有用资源