我有两个对象数组来描述公交线路的站点:


array1包含具有stopId和时间(即12.00)的对象。相同的stopId可以在不同的时间重复多次。
array2包含具有stopId和stopName的对象。 StopId与array1相同,但不再重复。


如何获得与array1顺序相同的新数组。但这还包含站点的名称(stopName)吗?我需要最快的算法。

这是一个例子:

array1 = [{ stopId : 2845, time : "12:00"},
          { stopId : 2900, time : "12:02"},
          { stopId : 2901, time : "12:05"},
          ...
          { stopId : 2845, time : "12:25"}]

array2 = [{ stopId : 2845, stopName: "NewYork"},
          { stopId : 2901, stopName: "London"},
          { stopId : 2900, stopName: "Rome"},
          ...]

result = [{ stopId : 2845, time : "12:00", stopName: "NewYork"},
          { stopId : 2900, time : "12:02", stopName: "Rome"},
          { stopId : 2901, time : "12:05", stopName: "London"},
          ...
          { stopId : 2845, time : "12:25", stopName: "NewYork"}]

最佳答案

这看起来是.map()的好用例

const result = array1.map((val) => {
  stop = array2.filter(val2 => val2.stopId === val.stopId)
    if (stop[0] && stop[0].stopName) {
      val.stopName = stop[0].stopName
      }
    return val;
  })


如果找到其他方法,则可以使用console.time()和console.timeEnd()进行计时,以轻松测试速度:)

09-30 13:49