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

如何在JS中按字典重复属性将一维列表转为二维锯齿列表

JS数组按经纬度聚合实现方案

实现逻辑

  • 用纬度,经度的拼接字符串作为唯一分组标识,借助Map结构存储分组结果
  • 遍历原数组所有元素,按生成的标识将元素归入对应分组,不存在的分组自动初始化
  • 最终提取Map的所有值,即可得到符合要求的二维数组结构

完整代码

// 聚合方法
const groupByLocation = (rawData) => {
  const locationMap = new Map()
  rawData.forEach(item => {
    const groupKey = `${item.latitude},${item.longitude}`
    if (!locationMap.has(groupKey)) {
      locationMap.set(groupKey, [])
    }
    locationMap.get(groupKey).push(item)
  })
  return Array.from(locationMap.values())
}

// 测试数据
const data = [{
  name: 'v',
  latitude: '30.0',
  longitude: '25.0'
}, {
  name: 'w',
  latitude: '30.0',
  longitude: '25.0'
}, {
  name: 'x',
  latitude: '45.9',
  longitude: '50.2'
}, {
  name: 'y',
  latitude: '40.5',
  longitude: '85.7'
}, {
  name: 'z',
  latitude: '40.5',
  longitude: '85.7'
}]

// 调用方法得到结果
const result = groupByLocation(data)
console.log(result)

结果验证

上述代码执行后输出的结果与给出的预期输出完全匹配,无论同坐标下有多少个元素,都会被包裹为独立的嵌套数组,单个元素的坐标也会单独生成一个嵌套数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:39:01