Удалить элементы в массиве и вернуть тот же массив без них
Как удалить все цифры 5 из массива? При условии, что нужно вернуть тот же массив но без цифер 5.
Мой код удаляет только первый найденный элемент, а именно первую найденную цифру 5. const array = [2, 5, 3, 5, 9, 5, 152]; let myIndex = array.indexOf(5); array.splice(myIndex, 1); console.log(array); |
NovichokJS,
иди циклом по всем элементам for -- сравнивай элементы с эталоном if-- и наращивай индекс, только если ничего не удалил i++ |
NovichokJS,
или while (myIndex !== -1) |
Цитата:
|
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,
меньше заморочки с индексом, если идти с конца массива. :) |
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)) |
сплайс в цикле - зло
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(', ')); |
Alexandroppolus,
:thanks: |
Часовой пояс GMT +3, время: 20:56. |