我有两个对象数组来描述公交线路的站点:
array1
包含具有 stopId 和 time(即 12.00)的对象。相同的 stopId 可以在不同的时间重复多次。array2
包含具有 stopId 和 stopName 的对象。 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/