我有两个对象数组来描述公交线路的站点: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()进行计时,以轻松测试速度:)