приращение 1 к последнему элементу массива, который не равен 0 Javascript - PullRequest
0 голосов
/ 07 января 2020

Привет, я новичок в JavaScript Я пытаюсь получить последний элемент массива, который не равен нулю, и добавить к нему 1, однако мой код не выдает желаемого результата, он получает последний элемент, даже если он равен 0 и добавляет 1 к нему

Пример

[0,1,2,3,0,5,0,0,2,0]

результат будет

[0,1,2,3,0,5,0,0,3,0]

2 - это последний элемент, который не является нулевым приращением на 1 = 3

код

 var arr= [0,1,2,3,0,5,0,0,2,0];
 var lastItem = arr.pop();
 lastItem = lastItem+1;
 arr.push(lastItem);

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Это будет делать то, что вы после!

var arr = [0, 1, 2, 3, 0, 5, 0, 0, 2, 0];
for (let x = arr.length - 1; x > 0; x--) {
  let currElem = arr[x];
  if (currElem != 0) {
    arr[x] = arr[x] + 1;
    break;
  }
}
alert(arr);

Он будет перебирать весь массив в reverse и проверять каждый элемент, если найдет тот, который не равен нулю (согласно спецификации), он будет добавлять 1 и разрывать.

См. JSFiddle

0 голосов
/ 07 января 2020

Попробуйте ниже фрагмент

var arr= [0,1,2,3,0,5,0,0,2,0];
console.log("before",arr)
for(var i = arr.length-1; i >= 0; i--) {
    if(arr[i] > 0)
    {
        arr[i] = arr[i]+1;
        break;
    }
}
console.log("after",arr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...