使用loop和localStorage [JavaScript]保存所有变量

Saving all variables using loop and localStorage [JavaScript]

本文关键字:保存 变量 JavaScript loop localStorage 使用      更新时间:2023-09-26

我想编写一段可以轻松保存所有变量的代码。通常我需要60个变量约120行。效率不高。我决定尝试用数组创建一个函数来保存所有变量。这好像行不通。

我的问题是,加载的变量是字符串,但我需要他们是浮动。

var variablelist = ["numb1","numb2","numb3","numb4","numb5"];
var variablelength = variablelist.length;
function save(){
  for (var i = 0; i < variablelength; i++){
    localStorage[variablelist[i]] = window[variablelist[i]];
  }
}
function load(){
  for (var i = 0; i < variablelength; i++){
    window[variablelist[i]] = localStorage[variablelist[i]];
  }
}

我试过了

window[variablelist[i]] = localStorage[parseFloat(variablelist[i])];

什么都没起作用。它仍然是一个字符串。有什么想法吗?

首先,看到这么多东西像那样存储在window对象上让我很伤心。你真的应该重新考虑一下!

LocalStorage是一种将键值对存储到浏览器内存以供以后访问的方法。唯一需要注意的是该值必须是字符串。

您可以使用JSON.stringifyJSON.parse函数来解决这个问题:

var objectToSave = {
  key1: 'something',
  key2: 'something else'
};
localStorage.setItem('myObject', JSON.stringify(objectToSave));
console.log(localStorage.getItem('myObject')); // What is stored
console.log(JSON.parse(localStorage.getItem('myObject'))); // The parsed object

否则,如果您设置保存所有单独的变量,您就不远了,您只需要使用getItemsetItem:

var variablelist = ["numb1","numb2","numb3","numb4","numb5"];
var variablelength = variablelist.length;
function save(){
  for (var i = 0; i < variablelength; i++){
    localStorage.setItem(variablelist[i], window[variablelist[i]]);
  }
}
function load(){
  for (var i = 0; i < variablelength; i++){
    window[variablelist[i]] = localStorage.getItem(variablelist[i]);
  }
}

使用localStore.setItem()localStore.getItem()来存储和加载项。还可以使用JSON.stringify()JSON.parse()将对象转换为文本,然后将其恢复为对象。

var variablelist = ["numb1","numb2","numb3","numb4","numb5"];
var variablelength = variablelist.length;
function save(){
  for (var i = 0; i < variablelength; i++){
    localStorage.setItem(variablelist[i], JSON.stringify(window[variablelist[i]]));
  }
}
function load(){
  for (var i = 0; i < variablelength; i++){
    window[variablelist[i]] = JSON.parse(localStorage.getItem(variablelist[i]));
  }
}