Задать вопрос
@Dyadko_Orest

Как найти общие элементы в массивах и вернуть их в заданном порядке?

Есть массив с id машин, и массив с объектами машин:

const carIds = [101, 102]
const cars = [{name: 'car3', id: 103}, {name: 'car2', id: 102}, {name: 'car1', id: 101}]

Нужно достать объекты машин в том порядке, в котором стоят их id в первом массиве:

result = [{name: 'car1', id: 101}, {name: 'car2', id: 102}]

Я делаю вот так:

const selectedDrivers = cars.filter((car) => carIds.includes(car.id))

но в результате получаю

[{name: 'car2', id: 102}, {name: 'car1', id: 101}]

Просто перевернуть массив не получится, потому что id могут быть в разном порядке.
  • Вопрос задан
  • 178 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const result = carIds.map(n => cars.find(m => m.id === n));

или

const result = carIds.map(function(n) {
  return this[n];
}, Object.fromEntries(cars.map(n => [ n.id, n ])));

или

const result = carIds.map(Map.prototype.get.bind(new Map(cars.map(n => [ n.id, n ]))));

или

const result = [];

for (const n of carIds) {
  for (const m of cars) {
    if (n === m.id) {
      result.push(m);
      break;
    }
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы