JavaScript: создать новый массив из непоследовательных существующих элементов массива

1

я имею

var arr1 = ['a', 'b', 'c', 'd', 'e'];

Я хочу создать новый массив arr2, состоящий из элементов из индексов 1 и 4 из arr1. Я посмотрел на slice(), но он работает только последовательно. Есть ли существующий метод, который у меня отсутствует, или я должен его создать? Благодарю.

  • 1
    Вопрос не ясен, что вы подразумеваете под непоследовательным?
  • 1
    Какой результат вы ожидаете?
Показать ещё 5 комментариев
Теги:
arrays
methods

4 ответа

1
Лучший ответ

Вы можете взять нужные индексы в виде массива и отобразить значения.

var array = ['a', 'b', 'c', 'd', 'e'],
    indices = [1, 4],
    result = indices.map(i => array[i]);
    
console.log(result);
  • 0
    Интересно, если OP означает индекс № 5 или 5-й пункт?
  • 0
    @mplungjan: ОП специально сказал "индексы 1 и 5". Но да, он / она, вероятно, имел в виду 0 и 4. :-)
Показать ещё 3 комментария
5

Я хочу создать новый массив arr2, состоящий из элементов из индексов 1 и 5 из arr1

Это просто, нет необходимости в методе, просто буквальная нотация:

var arr2 = [arr1[1], arr1[5]];

(Я должен отметить, что у вас нет "индекса 5" в вашем массиве. Вы имели в виду индексы 0 и 4?)

Живой пример (с использованием 1 и 5):

var arr1 = ['a', 'b', 'c', 'd', 'e'];
var arr2 = [arr1[1], arr1[5]];
console.log(arr2);

Живой пример (с использованием 0 и 4):

var arr1 = ['a', 'b', 'c', 'd', 'e'];
var arr2 = [arr1[0], arr1[4]];
console.log(arr2);
  • 1
    @Rajesh OP сказал, что индекс на 5 . Не 4
2

Просто назначьте их?

var arr1 = ['a', 'b', 'c', 'd', 'e'];
var arr2 = [arr1[0],arr1[4]];

console.log(arr1)
console.log(arr2)
  • 0
    Собирался по этому маршруту, но хотел что-то быстрее. Собираюсь пойти с предложением @ Нины, но признать, что если не последовательно, то придется обратиться куда-то индивидуально. Хотя, спасибо.
0

Другой способ добиться этого:

    var arr1 = ['a', 'b', 'c', 'd', 'e'];
    var arr2 = arr1.filter((it, index) => index === 0 || index === 4);
    console.log(arr2);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню