@leyarthemes

Как перетасовать массив по массиву индексов?

Всем привет, подскажите кроссбраузерный способ перетасовки массива по индексам. Например, у меня есть массив [100, 200, 300, 400, 500] и есть массив индексов [0, 3, 1, empty, 2]. На выходе должно быть - [100, 400, 200, empty, 300]. Спасибо.
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
есть массив индексов [0, 3, 1, empty, 2]
<...>
должно быть - [100, 400, 200, empty, 300]

Что, вот прям так - empty? Ну, держите:

for (let i = 0; i < indexes.length; i++) {
  if (indexes.hasOwnProperty(i)) {
    arr.push(arr[indexes[i]]);
  } else {
    arr.length++;
  }
}
arr.splice(0, arr.length - indexes.length);

Если отказаться от этого идиотизма с empty (пусть в массиве индексов будет что-то не числовое, null например; а в исходный массив подставляться будет undefiend, соответственно), то

arr.splice(0, arr.length, ...indexes.map(i => arr[i]));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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