javascript - 我有一个带有顺序的对象数组,我必须将它与另一个包含其他信息的数组合并。哪个算法最快?

标签 javascript arrays algorithm

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

  1. array1 包含具有 stopIdtime(即 12.00)的对象。相同的 stopId 可以在不同的时间重复多次。
  2. array2 包含具有 stopIdstopName 的对象。 StopIds 与 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() 来轻松测试速度:)

关于javascript - 我有一个带有顺序的对象数组,我必须将它与另一个包含其他信息的数组合并。哪个算法最快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58860860/

相关文章:

php - 之字形扫描 N x N 阵列

algorithm - 有几个职位?

php - 重力形式 - 获取当前页码

javascript - React-Redux:如何添加数组中的每个项目

C 语言中可以使用运算符来定义数组的大小吗?

java - 双数组从每个数组索引中查找最小值必须不同

algorithm - 能不能用二叉搜索树来模拟堆操作呢?

javascript - 在有状态组件中切换 bool 值

javascript - 如何在 AMX 页面加载时调用 Javascript 函数?

java - 如何在不同的类中获取2个ArrayList?