Qairat
@Qairat
frontend developer, angular 2+

Как сортировать по индексу другого массива в js, если нет этой значений?

Всем привет!
Есть два массива. Надо их сортировать по индексу другого.
order = ['а', 'б', 'в'];
list = ['в', 'а', 'б', 'г', 'д', 'а'];
list сортируется вот так ["г", "д", "а", "а", "б", "в"]
Теперь вопрос: например у меня в массиве order нет некоторые значение для сортировки,
как сделать чтобы при сортировке массиве list эти значение добавлялись в конце?
Вот так: ["а", "а", "б", "в", "г", "д"]
Вот мой код сортировки массива по индексу другого массива.
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
rework
@rework
Помог ответ? В благодарность отметь его решением
Что бы получить желаемый вами результат, нужно просто в функции сортировки проверять существование значений в массиве индексов и если его там нет, то возвращать 1, что бы он имел меньший приоритет, чем значений которое есть в массиве.

Поправил ваш код:

order = ['а', 'б', 'в'];
  list = ['в', 'ю', 'а', 'б', 'г', 'д', 'а'];

  list.sort((a,b) => {
    if (order.indexOf(a) == -1 && order.indexOf(b) == -1) return -1;
    if (order.indexOf(a) == -1) return 1;
    if (order.indexOf(b) == -1) return -1;
    return order.indexOf(a) - order.indexOf(b);
  });
  console.log(list);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы