gpt4 book ai didi

javascript - 根据另一个对象数组的属性对一个对象数组进行排序

转载 作者:行者123 更新时间:2023-12-01 02:27:14 26 4
gpt4 key购买 nike

我在 js 中有两个对象数组。虚拟数组如下所示。

arr1=[{'id':1,'name':'David'},
{'id':2,'name':'Miles'},
{'id':3,'name':'John'},];

arr2=[{'id':2,'age':22},
{'id':3,'age':18},
{'id':1,'age':12},];

我可以按照与 arr2 相同的 id 顺序对 arr1 进行排序吗?所以 arr1 变成

[{'id':2,'name':'Miles'},
{'id':3,'name':'John'},
{'id':1,'name':'David'},];

实际数组每个数组大约有 900 个对象。那么有什么有效的方法可以实现这一点吗?

最佳答案

减少第二个数组为由id索引的Map,然后使用Map.get来识别排序时 id 的位置。 Map 保证 O(1) 查找时间:

const arr1 = [{'id':1,'name':'David'},{'id':2,'name':'Miles'},{'id':3,'name':'John'},];
const arr2 = [{'id':2,'age':22},{'id':3,'age':18},{'id':1,'age':12},];

const ids = arr2.reduce((map, { id }, i) => map.set(id, i), new Map());
arr1.sort((a, b) => ids.get(a.id) - ids.get(b.id));
console.log(arr1);

尽管如此,900 个物体在现代来说根本不算什么。

关于javascript - 根据另一个对象数组的属性对一个对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50835116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com