Удалить элементы в массиве и вернуть тот же массив без них
Как удалить все цифры 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, время: 17:54. |