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

使用array.map处理坐标数组时如何同时获取最近点距离及其他属性

代码修改方案

核心修改逻辑:原来的实现只保留了距离计算结果,丢失了和原数据项的关联,所以需要在计算距离时就把距离值和对应的数据项绑定存储,后续处理时就能同时读取距离和任意额外属性。

修改后的完整代码如下:

// Data数组支持新增任意额外属性
Data : [
  {id: "1", Point: "27.1597268, 40.6646601", A: "4"},
  {id: "2", Point: "11.1640393, 49.6487153", A: "7"},
  {id: "3", Point: "26.1539253, 42.6599287", A: "2"}, 
  {id: "4", Point: "21.1597268, 44.6646601", A: "9"}
],

// 处理逻辑修改
const validCoords = !!(coords.longitude && coords.latitude);
const distances = validCoords 
  ? this.state.Data
      .map(item => {
        const distance = getPreciseDistance(coords, item.Point);
        // 绑定距离和原数据项
        return distance ? { distance, item } : null;
      })
      .filter(Boolean)
      // 按距离从小到大排序
      .sort((a, b) => a.distance - b.distance)
      // 渲染时同时取距离和额外属性
      .map(({ distance, item }) => (
        <Text key={item.id}>Distance: {distance} and A: {item.A},</Text>
      ))
  : [];

// 如果只需要输出最近的一个点,排序后取第一项即可
const nearestPoint = validCoords ? distances[0] : null;

如果后续新增其他额外属性,直接从item字段中取对应属性名即可,不需要修改核心处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:27:06