javascript 如何从localstorage中删除空字符串

mdfafbf1  于 12个月前  发布在  Java
关注(0)|答案(1)|浏览(81)

每次我刷新页面时,它都会在我的本地存储中创建空字符串,每次它都会在我的Web上创建空元素,我不想这样,我怎么能解决这个问题呢

function saveLocalTodos(todo) {
    //check
    let todos;
    if(localStorage.getItem('todos') === null){
        todos = [];
    }else {
        todos = JSON.parse(localStorage.getItem('todos'))
    }
    

    todos.push(todo);
    localStorage.setItem('todos', JSON.stringify(todos));
}

 window.onload = function() {
        const storedData = localStorage.getItem("todos");
      
       
        if (storedData && storedData !== "") {
          
          let todos;
          if(localStorage.getItem('todos') === null){
              todos = [];
          }else {
              todos = JSON.parse(localStorage.getItem('todos'))
          } else {
          
          localStorage.removeItem('todos')
        };
      }
ldxq2e6h

ldxq2e6h1#

也许你可以重构为这样的东西:

const getTodosInStorage = () => {
  const rawTodos = localStorage.getItem('todos');
  const currentTodos = !!rawTodos ? JSON.parse(rawTodos) : [];
  return currentTodos;
};

const saveLocalTodos = (todo) => {
  const currentTodos = getTodosInStorage();
  const todos = JSON.stringify([...currentTodos, todo]);
  localStorage.setItem('todos', todos);
};

window.onload = () => {
  const initialTodos = getTodosInStorage();
  // Do whatever you need to do with the initial
  // already existing todos.
};

这样你就不需要关心localStorage项中是否有空字符串。你总是会得到你能找到的东西。唯一的一件事是,你需要确保你会有下一个场景:
1.当调用localStorage.getItem('todos')时,您将得到null''
1.调用localStorage.setItem('todos', /*whatever*/)时,将设置有效的JSON数组字符串化或空字符串
这样,在localStorage中查找todos时,您将获得一致性。

相关问题