Lodash - 按数组中的位置排序

Pie*_*ran 2 javascript lodash

我有一个对象数组

let myArray = [
    {
        id: 'first',
        name: 'john',
    },
    {
        id: 'second',
        name: 'Emmy',
    },
    {
        id: 'third',
        name: 'Lazarus',
    }
]
Run Code Online (Sandbox Code Playgroud)

和一个数组

let sorter = ['second', 'third', 'first']
Run Code Online (Sandbox Code Playgroud)

我想使用lodash排序方法根据对象在 中的位置对对象进行排序sorter。这样输出就是

let mySortedArray = [
    {
        id: 'second',
        name: 'Emmy',
    },
    {
        id: 'third',
        name: 'Lazarus',
    },
    {
        id: 'first',
        name: 'john',
    }
]
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

Alb*_*res 5

您可以通过使用mapfind来实现此目的:

let myArray = [
  {
    id: "first",
    name: "john"
  },
  {
    id: "second",
    name: "Emmy"
  },
  {
    id: "third",
    name: "Lazarus"
  }
];

let sorter = ["second", "third", "first"];

let mySortedArray = sorter.map(x => myArray.find(y => y.id === x));

console.log(mySortedArray);
Run Code Online (Sandbox Code Playgroud)