04.06.2022, 18:24
|
Профессор
|
|
Регистрация: 25.04.2022
Сообщений: 159
|
|
Удалить элементы в массиве и вернуть тот же массив без них
Как удалить все цифры 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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
NovichokJS,
иди циклом по всем элементам for -- сравнивай элементы с эталоном if-- и наращивай индекс, только если ничего не удалил i++
|
|
04.06.2022, 18:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
NovichokJS,
или
while (myIndex !== -1)
|
|
04.06.2022, 18:45
|
Профессор
|
|
Регистрация: 25.04.2022
Сообщений: 159
|
|
Сообщение от рони
|
NovichokJS,
или
while (myIndex !== -1)
|
да, чет не понял
|
|
04.06.2022, 18:49
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
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))
|
|
04.06.2022, 18:57
|
Профессор
|
|
Регистрация: 25.04.2022
Сообщений: 159
|
|
спасибо, разобрался теперь!
|
|
04.06.2022, 19:29
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
NovichokJS,
меньше заморочки с индексом, если идти с конца массива.
|
|
04.06.2022, 19:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
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))
|
|
04.06.2022, 20:28
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
сплайс в цикле - зло
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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
Alexandroppolus,
|
|
|
|