javascript - 对不同集合上匹配 id 的对象数组进行排序

标签 javascript arrays sorting lodash

我有一个对象数组

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 不是必需的,但也许会有用)

最佳答案

参见 MapArray.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/

相关文章:

sorting - 根据Elasticsearch中的位置和等级进行自定义排序

javascript - 使用数据属性和 JS 对 div 进行排序

javascript、$.ajax、变量名

c - 我需要一个将二维数组传递给 C 函数的简单示例

Javascript在循环中将对象添加到外部数组

python - 以相反顺序对 4D 数组的每一列进行排序

javascript - 了解就地合并排序

javascript - 在 Chrome 中生成下载时出现网络错误

javascript - Ajax无法加载php json

c++ - 在 C++ 中使用冒泡排序对结构数组的成员进行排序