Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

Как перебрать в цикле весь массив [0,1,2,3,4] начиная с третьего элемента: 2,3,4,0,1?

#javascript


Как перебрать в цикле весь массив [0,1,2,3,4] начиная с третьего элемента: 2,3,4,0,1?
    


Ответы

Ответ 1



Предотвратить выход за пределы массива с зацикливанием легко сделать при помощи нахождения остатка от деления При проведении обычной итерации берем индекс и прибавляем к нему необходимое смещение. Пока индекс меньше длины массива остаток от деления этого числа на длину будет равен исходному числу. А когда он станет больше или равен длине, мы получим смещения от начала: 0 + 2 = 2 -> 2 % 5 = 2 1 + 2 = 3 -> 3 % 5 = 3 2 + 2 = 4 -> 4 % 5 = 4 3 + 2 = 5 -> 5 % 5 = 0 4 + 2 = 6 -> 6 % 5 = 1 При помощи цикла: let arr = [0,1,2,3,4], start = 2; for (let i = 0; i < arr.length; i++) { let index = (i + start) % arr.length; console.log(arr[index]); } Через forEach let arr = ['яблоко','груша','ананас','мандарин','арбуз'], start = 2; arr.forEach((e,i) => console.log(arr[(i+start)%arr.length]))

Ответ 2



let arr = [0,1,2,3,4], start = 2; var i = start; do{ if (i == arr.length) i = 0; console.log(arr[i]); i++; } while (i != start)

Ответ 3



// Это наши входные данные, именно с этим массивом мы хотим работать let array = [0,1,2,3,4]; // Не стоит изменять входные данные, т.к. скорее всего вам с ними ещё работать в будущем, поэтому переложим их в новый массив // Метод slice (БЕЗ АРГУМЕНТОВ), необходим для того, чтобы создать независимую копию массива, а не ссылаться на входные данные let enumArray = array.slice(); // Метод удалит 2 элемента начиная с индекса 0. // И сохранит удалённые элементы в новый массив. const removed = enumArray.splice(0, 2); // Возвращаем удалённые элементы в конец массива. // Длинна массива в нашем случае будет служить индексом с которого нужно добавить обратно в массив все удаленные элементы enumArray.splice(enumArray.length, 0, ...removed); enumArray.forEach((item) => { console.info(item); }); Подробней о методе splice почитайте пожалуйста здесь Подробней про независимые копии массивов почитайте пожалуйста здесь

Комментариев нет:

Отправить комментарий