Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.08.2021, 12:58
Новичок на форуме
Отправить личное сообщение для Fragman Посмотреть профиль Найти все сообщения от Fragman
 
Регистрация: 10.08.2021
Сообщений: 7

Удаление элементов из массива
Доброго времени суток, друзья. Интересует следующий момент. В js, я пытаюсь создать массив с числами, добавив в них id с чекбоксов. Массив при выделении чекбокса заполняется, но вот убрать это число из массива не выходит. Если выходит, то повторять действия нужно в том же порядке. В чём может быть дело? Заранее спасибо, за дельный совет

doSomething = (props) => {
        let num = Number(props);

        for (let i = 0; i <= this.state.nums.length; i++) {
            if (num === this.state.nums[i]) {
                this.state.nums.splice(i, 1);
                break;
            } else {
                this.state.nums.push(num);
                break;
            }
        }
        this.setState({ newArr: this.state.nums });
        console.log(this.state.newArr);
    };

Последний раз редактировалось Fragman, 10.08.2021 в 13:02.
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2021, 13:33
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,709

Не совсем понятно, что вам именно надо.
Похоже надо добавить число в массив, если его там нет, или удалить, если оно там есть.
Тогда так

doSomething = (props) => {
        let num = Number(props);
        let k =  this.state.nums.indexOf(num);
        if (k<0) {
             this.state.nums.push(num)
        } else {
             this.state.nums.splice(k, 1);
        }
        this.setState({ newArr: this.state.nums });
        console.log(this.state.newArr);
    };
Ответить с цитированием
  #3 (permalink)  
Старый 10.08.2021, 13:43
Новичок на форуме
Отправить личное сообщение для Fragman Посмотреть профиль Найти все сообщения от Fragman
 
Регистрация: 10.08.2021
Сообщений: 7

Спасибо огромное! Просто нет слов!!!
Ответить с цитированием
  #4 (permalink)  
Старый 10.08.2021, 14:06
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

я так понимаю, что это из реакта кусок, ну так есть плохая новость, что нельзя менять стейт не через setState
Ответить с цитированием
  #5 (permalink)  
Старый 10.08.2021, 14:09
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,709

Ни капли не знаток реакта, но вроде там есть
this.setState({ newArr: this.state.nums });
Ответить с цитированием
  #6 (permalink)  
Старый 10.08.2021, 14:35
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

Сообщение от voraa
this.state.nums.push(num)
Сообщение от voraa
this.state.nums.splice(k, 1);
эти методы изменяют оригинальный массив, так не должно быть
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление элементов массива у другого массива _marisha Общие вопросы Javascript 8 31.03.2020 07:19
Удаление больше одного повторяющихся элементов массива Katy93 Общие вопросы Javascript 0 23.02.2019 10:25
Удаление элементов из массива Noin Javascript под браузер 3 18.07.2015 17:37
Массив из элементов другого массива, взятых в случайном порядке Basil_JS Общие вопросы Javascript 6 12.04.2015 13:07
Удаление одинаковых элементов массива Ваяс Events/DOM/Window 57 20.02.2014 15:31