如何在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
相关产品推荐
相关产品推荐

