执行 array.map 后也检索其他项目属性

Retrieve other item properties too, after executing array.map

我正在映射一个数据数组以获得我到点的距离,结果我得到(空过滤、排序数组然后提取)距离我最近的点。结果我得到“距离:234456”。

现在,我正在尝试对 New/same 数据数组和另一个 属性 数组做同样的事情,并且与 map.distance 结果一起,我将进入 return 额外的 属性 也是。

新数据数组会有像 {id: "1", Point: "-34.910490, -56.201567", A: "4"} 这样的对象,所以假设这将是最近的点,我会得到 return“距离:234456 和 A:4”。

Data : [{id: "1", Point: "27.1597268, 40.6646601"},
        {id: "2", Point: "11.1640393, 49.6487153"},
        {id: "3", Point: "26.1539253, 42.6599287"}, 
        {id: "4", Point: "21.1597268, 44.6646601"}],


const distances = this.state.Data.map(
      (item) =>
        !!(coords.longitude && coords.latitude) &&
        getPreciseDistance(coords, item.Point)
    )
      .filter(Boolean)
      .sort()
      .map((distance) => <Text>{distance},</Text>);

为了使您的函数 return 成为具有属性 distancea 的对象,您可以将地图函数更改为不仅 return 单个值,但是return你想要的对象:

const distances = this.state.Data.map(
      (item) =>
        !!(coords.longitude && coords.latitude) &&
        // return an object instead of a single number
        ({ distance: getPreciseDistance(coords, item.Point), a: item.a})
    )
      .filter(Boolean)
      .sort()

但是,如果您要搜索距离最大的单个项目,我通常会在函数链的末尾使用 find function。这样您就可以确保您的函数始终只有 return 一项。