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

如何对包含坐标对象的array进行转换与过滤分组

按经纬度分组数组对象的解决方案

嘿,这个需求用JavaScript处理起来很简单,咱们可以借助Array.prototype.reduce方法来实现按经纬度分组的逻辑,下面直接上代码和解释:

实现代码

// 你的原始数组
const originalArray = [
  { latitude: 00, longitude: 11 },
  { latitude: 22, longitude: 33 },
  { latitude: 00, longitude: 11 }
];

// 核心分组逻辑
const groupedArray = Object.values(
  originalArray.reduce((groupMap, currentItem) => {
    // 生成唯一标识键:把纬度和经度拼接成字符串,确保相同经纬度的键一致
    const groupKey = `${currentItem.latitude},${currentItem.longitude}`;
    
    // 如果当前键还没有对应的数组,就初始化一个空数组
    if (!groupMap[groupKey]) {
      groupMap[groupKey] = [];
    }
    
    // 把当前对象加入对应分组的数组
    groupMap[groupKey].push(currentItem);
    
    return groupMap;
  }, {}) // 初始值是一个空对象,用来存储分组映射
);

// 打印结果看看
console.log(groupedArray);

代码解释

  1. reduce遍历分组:用reduce遍历原始数组,groupMap作为累加器,负责存储「经纬度组合键」和「对应对象数组」的映射关系。
  2. 生成唯一键:把每个对象的latitude和longitude用逗号拼接成字符串,这样相同经纬度的对象会生成完全一样的键,保证它们被分到同一组。
  3. 初始化分组数组:如果groupMap里还没有当前键对应的数组,就先创建一个空数组。
  4. 提取最终结果:最后用Object.values()把groupMap里的所有数组提取出来,就得到了你想要的二维数组结构。

补充说明

  • 原始数组里的00会被JS自动解析为数字0,但这不影响分组逻辑,因为0和0是严格相等的。
  • 如果你的经纬度是字符串类型(比如"00"),这个方法同样适用,只要保持键的生成逻辑一致就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:18:24