如何按另一个数组 ID 对数组进行排序(lodash / javascript)

MeP*_*ePo 1 javascript lodash

我希望我的第二个数组按id第一个数组中的属性排序。

这是我的数组

第一个数组

data : 
  items:
    0: {id: 14, attributes: Array(1)}
    1: {id: 8, attributes: Array(1)}
    2: {id: 4, attributes: Array(1)}
    3: {id: 1, attributes: Array(2)}
    4: {id: 2045, attributes: Array(2)}
Run Code Online (Sandbox Code Playgroud)

第二个数组

data : 
  items:
    0: {id: 1, name: "test Product 1"}
    1: {id: 4, name: "test Product 1"}
    2: {id: 8, name: "test Product 1"}
    3: {id: 14, name: "test Product 1"}
    4: {id: 2045, name: "test Product 1"}
Run Code Online (Sandbox Code Playgroud)

我是这样试的:

Javascript - 基于另一个数组对数组进行排序

但我似乎无法让它工作。我知道这被问了很多,但我就是想不通。

geo*_*org 5

洛达什

sorted = _.sortBy(items1, x => _.findIndex(items2, y => x.id === y.id))
Run Code Online (Sandbox Code Playgroud)

如果您的数组相当长,则先构建索引,然后按该索引排序可能更有效:

index = _.fromPairs(_.map(items2, (x, i) => [x.id, i]));
sorted = _.sortBy(items1, x => index[x.id])
Run Code Online (Sandbox Code Playgroud)