Если вы хотите отсортировать массив на месте, вам не нужен Lodash, вы можете легко сделать это с ванильным JavaScript
let myArray = [
{
id: 'first',
name: 'john',
},
{
id: 'second',
name: 'Emmy',
},
{
id: 'third',
name: 'Lazarus',
}
]
let sorter = ['second', 'third', 'first']
//create a lookup table (map) to save looking through the array
const sortLookup = new Map();
//populate with element as key - index as value
sorter.forEach((id, index) => sortLookup.set(id, index));
//sort using the indexes of sorter
myArray.sort((a, b) => sortLookup.get(a.id) - sortLookup.get(b.id))
console.log(myArray)
Используется Карта , но то же самое можно легко сделать с помощью простого объекта JavaScript {}
.Вам даже не нужно предварительно вычислять поиск, который myArray.sort((a, b) => sorter.indexOf(a.id) - sorter.indexOf(b.id))
даст точно такой же результат, но это будет означать, что вместо обхода sorter
один раз для сложности O(n)
у вас потенциально есть O(n^m)
или * 1015.* (если оба массива имеют одинаковую длину)