Вы можете просто проверить с помощью Array.indexOf индекс и сравнить с помощью Array.sort .Для этого не нужно использовать lodash:
const movies = [{"title":"La La Land","genre":"Musical"},{"title":"Avengers","genre":"Action"},{"title":"Chucky","genre":"Horror"}]
const titles = ["Chucky","La La Land","Avengers"]
let result = movies.sort((a,b) => titles.indexOf(a.title) - titles.indexOf(b.title))
console.log(result)
Если вы не имеете дело с сотнями тысяч записей в этих массивах, производительность не должна быть проблемой.Однако, если вам нужен высокопроизводительный, вы можете сделать это путем сокращения до простой пары key/value
, где ваш ключ - string
, а значение index in the array
:
const movies = [{"title":"La La Land","genre":"Musical"},{"title":"Avengers","genre":"Action"},{"title":"Chucky","genre":"Horror"}]
const titles = ["Chucky","La La Land","Avengers"]
.reduce((acc,c,i) => (acc[c] = i, acc), {}) // reduce to a key/value pairs
let result = movies.sort((a,b) => titles[a.title] - titles[b.title]) // sort by index
console.log(result)