mal1kov
@mal1kov
Притворись дураком 5 минут, чем быть им всю жизнь.

Почему не удаляется выбранный элемент из массива?

Мне надо удалить число 4 из массива и вывести остальное, но почему, то если раскомментить
array.splice(index, 1);
неправильно находится позиция элементов

var array = [4, 4, 5, 4];
var num = 4;

for(var index in array){
    if(array[index] === num){
        //array.splice(index, 1);
        console.log(index + " - позиции - " + num + " удалено");
    }
}

console.log(array + " — остальные числа");


https://jsfiddle.net/v5oenj31/
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Потому что смещение.

На первой итерации:
array ====> [4,4,5,4]
index ====> 0
Удаляем 0-й элемент, остаётся [4,5,4]

На второй итерации:
array ====> [4,5,4]
index ====> 1
Не удаляем ничего, потому что array[1] == 5, а пятерку мы не трогаем.

Но третьей итерации:
array ====> [4,5,4]
index ====> 2
Удаляем последнюю 4-ку.

Остаётся [4,5]
Это и есть сухой остаток.

Решение

Перебираем массив в обратном порядке.
var array = [4, 4, 5, 4];
var num = 4;

for(var index=array.length-1; index>=0; index--){
    if(array[index] === num){
        array.splice(index, 1);
        console.log(index + " - позиции - " + num + " удалено");
    }
}

console.log(array + " — остальные числа");

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект