Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2022, 18:24
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 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);
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2022, 18:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

NovichokJS,
иди циклом по всем элементам for -- сравнивай элементы с эталоном if-- и наращивай индекс, только если ничего не удалил i++
Ответить с цитированием
  #3 (permalink)  
Старый 04.06.2022, 18:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

NovichokJS,
или
while (myIndex !== -1)
Ответить с цитированием
  #4 (permalink)  
Старый 04.06.2022, 18:45
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Сообщение от рони Посмотреть сообщение
NovichokJS,
или
while (myIndex !== -1)
да, чет не понял
Ответить с цитированием
  #5 (permalink)  
Старый 04.06.2022, 18:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

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))
Ответить с цитированием
  #6 (permalink)  
Старый 04.06.2022, 18:57
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

спасибо, разобрался теперь!
Ответить с цитированием
  #7 (permalink)  
Старый 04.06.2022, 19:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

NovichokJS,
меньше заморочки с индексом, если идти с конца массива.
Ответить с цитированием
  #8 (permalink)  
Старый 04.06.2022, 19:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

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))
Ответить с цитированием
  #9 (permalink)  
Старый 04.06.2022, 20:28
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

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

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(', '));
Ответить с цитированием
  #10 (permalink)  
Старый 04.06.2022, 20:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Alexandroppolus,
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из одного массива удалить элементы другого... t3mir1an Events/DOM/Window 4 22.10.2013 11:14
Как вернуть элементы к превоночальному состоянию после переноса? Randomizer jQuery 0 10.10.2012 21:32
Не могу выбрать и удалить клонируемые элементы AlexPrm jQuery 6 30.05.2010 15:58
Как удалить повторные элементы из массива? YISHIMITSY Общие вопросы Javascript 1 04.05.2010 00:04
Как удалить массив? SunYang Общие вопросы Javascript 14 05.02.2010 14:31