我有一个对象数组
array = [
{id: 5, name: "Helen", age: 20},
{id: 15, name: "Lucy", age: 30},
{id:7, name: "Carlos", age: 1}
]
然后我有一个类似的数组,但排序不同
arraySorted = [
{id: 15, name: "Lucy", age: 2},
{id: 5, name: "Lara", age: 11},
{id:7, name: "Carlos", age: 10}
]
两个数组中对象的 ID 始终匹配,其余属性可能会也可能不会。
我需要按照与 arraySorted
相同的 id
顺序对数组进行排序。
(它也可以在普通的 JavaScript
上完成,lodash
不是必需的,但也许会有用)
最佳答案
参见 Map
和 Array.prototype.map()
了解更多信息。
// Raw.
const raw = [
{id: 5, name: "Helen", age: 20},
{id: 15, name: "Lucy", age: 30},
{id:7, name: "Carlos", age: 1}
]
// Sorted.
const sorted = [
{id: 15, name: "Lucy", age: 2},
{id: 5, name: "Lara", age: 11},
{id:7, name: "Carlos", age: 10}
]
// Match.
const match = (raw, sorted) => (m => sorted.map(s => m.get(s.id)))(new Map(raw.map(r => [r.id, r])))
// Output.
const output = match(raw, sorted)
// Proof.
console.log(output)
关于javascript - 对不同集合上匹配 id 的对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49528252/