Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Удалить элементы в массиве и вернуть тот же массив без них (https://javascript.ru/forum/misc/84113-udalit-ehlementy-v-massive-i-vernut-tot-zhe-massiv-bez-nikh.html)

NovichokJS 04.06.2022 18:24

Удалить элементы в массиве и вернуть тот же массив без них
 
Как удалить все цифры 5 из массива? При условии, что нужно вернуть тот же массив но без цифер 5.

Мой код удаляет только первый найденный элемент, а именно первую найденную цифру 5.

const array = [2, 5, 3, 5, 9, 5, 152];
let myIndex = array.indexOf(5);
array.splice(myIndex, 1);
console.log(array);

рони 04.06.2022 18:30

NovichokJS,
иди циклом по всем элементам for -- сравнивай элементы с эталоном if-- и наращивай индекс, только если ничего не удалил i++

рони 04.06.2022 18:33

NovichokJS,
или
while (myIndex !== -1)

NovichokJS 04.06.2022 18:45

Цитата:

Сообщение от рони (Сообщение 545922)
NovichokJS,
или
while (myIndex !== -1)

да, чет не понял

рони 04.06.2022 18:49

NovichokJS,
function remove(array, item) {
            for (;;) {
                let myIndex = array.indexOf(item);
                if (myIndex === -1) break;
                else array.splice(myIndex, 1);
            }
            return array
        }
        const array = [2, 5, 3, 5, 9, 5, 152];
        console.log(remove(array, 5))

        function removeItem(array, item) {
            for (let i = 0; i < array.length;) {
                if (array[i] === item) array.splice(i, 1);
                else i++;
            }
            return array
        }
        const arr = [2, 5, 3, 5, 9, 5, 152];
        console.log(removeItem(arr, 5))

NovichokJS 04.06.2022 18:57

спасибо, разобрался теперь!

рони 04.06.2022 19:29

NovichokJS,
меньше заморочки с индексом, если идти с конца массива. :)

рони 04.06.2022 19:33

NovichokJS,
function removeItem(array, item) {
            for (let i = array.length; i ;) {
                if (array[--i] === item) array.splice(i, 1);
            }
            return array
        }
        const arr = [2, 5, 3, 5, 9, 5, 152];
        console.log(removeItem(arr, 5))

Alexandroppolus 04.06.2022 20:28

сплайс в цикле - зло

function removeValue(arr, value) {
    for (var p = 0, i = 0, le = arr.length; i < le; ++i) {
      if (arr[i] !== value) {
        arr[p++] = arr[i];
      }
    }
    arr.length = p;
    return arr;
}

const ar = [2, 5, 5, 3, 4, 5, 6, 7, 5, 1, 5];
removeValue(ar, 5);
alert(ar.join(', '));

рони 04.06.2022 20:49

Alexandroppolus,
:thanks:


Часовой пояс GMT +3, время: 20:56.