szQocks
@szQocks

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

arr = [1,2,3,4,5,6]
num = 10
index = 3

Подскажите как преобразовать массив начиная с 3 индекса и всем следующим элементам добавлять единицу пока num не станет = 0. Я могу преобразовать его но с каждого 3 элемента , но так что бы первый элемент с 3 а все остальные уже по порядку, не как не выходит , все ломаю голову.

Желательно реализацию через map , for или рекурсию.
  • Вопрос задан
  • 264 просмотра
Решения вопроса 3
FinGanapre
@FinGanapre
А почему не while?

const arr = [1,2,3,4,5,6]
let num = 10
let index = 3

while ( num > 0 ) {
  if ( !arr[index] ) {
    index = 0
  }
  
  arr[index] += 1
	
  index++
  num--
}

console.log( arr )
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Собираем новый массив:

const newArr = [...Array(num)].reduce((acc, n, i) => (
  acc[(index + i) % acc.length]++,
  acc
), [...arr]);

// или

const newArr = arr.map(function(n, i, a) {
  return n + this[0] + (((i - index) % a.length + a.length) % a.length < this[1]);
}, [ num / arr.length | 0, num % arr.length ]);

Обновляем существующий:

for (let i = num; i-- > 0; arr[(index + i) % arr.length]++) ;

// или

(function xxx(i) {
  if (--i >= 0) {
    arr[(index + i) % arr.length]++;
    xxx(i);
  }
})(num);
Ответ написан
wapster92
@wapster92 Куратор тега JavaScript
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
CIDBerlin
@CIDBerlin
Junior front-end developer
Вы хотели сказать со второго индекса?)
Ответ написан
Ваш ответ на вопрос

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

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