Не удается удалить элемент с массива в localstorage

149
27 июля 2019, 17:00

Записываю значения я таким способом:

    //isEmpty - моя ф-ция, которая проверяет пустой ли объект
    //item - это обычный стринг
    if (isEmpty(JSON.parse(localStorage.getItem('todos')))) {
        localStorage.setItem('todos', JSON.stringify([item]));
    } else {
        var localTodos = JSON.parse(localStorage.getItem('todos'));
        localTodos.push(item);
        localStorage.setItem('todos', JSON.stringify(localTodos));
    }

Столкнулась с тем, что нужно добавить возможность удалить какую-то запись при нажатии на кнопку. Т.е. если на входе получаю массив вида

todos: ['123', '12', '1']

и мне нужно удалить элемент с индексом 1, то должен получиться

todos: ['123', '1']

Индекс я записсываю в value кнопки и при нажатии его вытягиваю и пытаюсь удалить запись таким способом:

    //todoId - индекс элемента
    var todos    = JSON.parse(localStorage.getItem('todos'));
    var newTodos = todos.splice(todoId, 1);
    localStorage.setItem('todos', JSON.stringify(newTodos));

Но на выходе получается какая-то белеберда и удаляются все записи кроме выбранной. Не подскажете как можно сделать по-другому?

Answer 1

splice меняет сам массив, а возвращает удалённый элемент

var todos    = JSON.parse(localStorage.getItem('todos'));
todos.splice(todoId, 1);
localStorage.setItem('todos', JSON.stringify(todos));
READ ALSO
Круговое передвижение по карте

Круговое передвижение по карте

Есть очень большой двумерный массив - игровая картаЕсть маленький двумерный массив - текущая, видимая часть игровой карты

137
Правильный счетчик вопросов

Правильный счетчик вопросов

Имеется несколько input'ов с одинаковым классом Как узнать какой инпут по счету сейчас активен?

128
Не работает enforceInMethodNames в eslint

Не работает enforceInMethodNames в eslint

Добавил в eslintrc такое правило: "rules": { "linebreak-style": 0, "enforceInMethodNames": true, "allowAfterThis": true }

113