You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript按国家分组数组:无序初始数组的重组实现方案

按国家分组二维数组的实现方案

需求说明

我们有一组包含「国家、城市、日期」的二维数组,不管初始顺序是否混乱,需要将其按国家分组,把同一个国家的城市+日期数据归集到对应国家的条目下。

原始输入示例(顺序混乱)

const originalArray = [
  ["Spain", "Madrid", "10-12-2024"],
  ["Suisse", "Berne", "10-18-2024"],
  ["France", "Paris", "10-22-2024"],
  ["France", "Lyon", "10-24-2024"],
  ["Spain", "Barcelona", "10-15-2024"]
];

期望输出格式

[
  ["Spain", 
    ["Madrid", "10-12-2024"], 
    ["Barcelona", "10-15-2024"]
  ],
  ["Suisse", 
    ["Berne", "10-18-2024"]
  ],
  ["France", 
    ["Paris", "10-22-2024"],
    ["Lyon", "10-24-2024"]
  ]
]

便捷实现方法

用JavaScript的reduce方法可以高效完成分组,无需关心原始数组顺序,代码逻辑清晰:

const groupedArray = Object.values(originalArray.reduce((acc, [country, city, date]) => {
  // 若当前国家未在累加器中,初始化条目
  if (!acc[country]) {
    acc[country] = [country];
  }
  // 将城市+日期追加到对应国家的条目下
  acc[country].push([city, date]);
  return acc;
}, {}));

console.log(groupedArray);

逻辑拆解

  1. 遍历处理每一项:通过reduce逐个遍历原始数组元素,解构出国家、城市、日期三个值。
  2. 用对象做临时存储:以国家名为键,分组后的数组为值,方便快速查找是否已有该国家的分组。
  3. 归集对应数据:如果是第一次遇到某个国家,就创建以国家名为首元素的数组;之后每次遇到同国家的数据,就把城市+日期的子数组追加进去。
  4. 转换为目标格式:用Object.values()把临时对象里的分组数组提取出来,得到最终需要的二维数组结构。

内容的提问来源于stack exchange,提问作者Wolden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 17:05:13