如何在JavaScript中从对象数组提取经纬度数据列表(React Native)
问题描述
假设我们有如下JSON数据:
var example = [{ latitude: 11.1111, longitude: 111.111, name: "for example1", altitude: 88 }, { latitude: 22.2222, longitude: 222.222, name: "for example2", altitude: 89 }, { latitude: 33.3333, longitude: 333.333, name: "for example3", altitude: 90 } ]
我需要获取仅包含latitude和longitude的列表(或对象),因为我的React Native应用中的Map API需要这些数据。但由于性能问题,我无法使用循环。我知道编写单独的MySQL查询可以解决这个问题,但我认为这不是好方案(如果我的想法有误,也请告知)。请问该如何解决这个问题?
解决方案
1. 优先使用数组map方法
别担心map的性能,它是JS引擎底层优化过的遍历实现,比手动写普通循环效率更高,完全能满足需求,代码如下:
const coords = example.map(item => ({ latitude: item.latitude, longitude: item.longitude }));
执行后coords就是只包含经纬度的对象数组,可直接给Map API使用。
2. 关于MySQL查询的纠正
单独写MySQL查询只返回latitude和longitude其实是非常优质的方案:
- 减少数据库到前端的数据传输量,节省带宽
- 前端无需处理冗余字段,降低内存占用
如果数据量较大,这种方案的性能优势会特别明显,完全值得采用。
3. 极致性能可选:reduce方法
如果数据量极大,也可以用reduce,但实际性能和map相差不大,代码示例:
const coords = example.reduce((result, item) => { result.push({ latitude: item.latitude, longitude: item.longitude }); return result; }, []);
内容的提问来源于stack exchange,提问作者Owen Choi
相关产品推荐
相关产品推荐

