带有字符串键的数组的JavaScript本地存储

带有字符串键的数组的JavaScript本地存储,javascript,arrays,Javascript,Arrays,如果将数组保存在localStorage中,则使用字符串键保存的值将丢失 例如: var myArray = []; myArray["key1"] = "value1"; myArray[123] = "value2"; 一切正常,以下工作的输出: myArray["key1"] => value1 myArray[123] => value2 现在,如果我使用以下内容存储阵列: localStorage.setItem('myStoredArray',JSON.string

如果将数组保存在localStorage中,则使用字符串键保存的值将丢失

例如:

var myArray = [];

myArray["key1"] = "value1";
myArray[123] = "value2";
一切正常,以下工作的输出:

myArray["key1"] => value1
myArray[123] => value2
现在,如果我使用以下内容存储阵列:

localStorage.setItem('myStoredArray',JSON.stringify(myArray));
var myArray = JSON.parse(localStorage.getItem('myStoredArray'));
输出缺少用字符串键指定的值:

myArray["key1"] => undefined
myArray[123] => value2
我是否做错了什么,它是否可以工作,或者是否有另一种方法保存它,即使用字符串键指定值


提前谢谢

JavaScript中没有关联数组。您应该使用将所有键转换为字符串的对象

var myObj = {}; // <<< change here

myObj["key1"] = "value1";
myObj[123] = "value2";

var myObj={};// JavaScript中没有关联数组。您应该使用将所有键转换为字符串的对象

var myObj = {}; // <<< change here

myObj["key1"] = "value1";
myObj[123] = "value2";

var myObj={};// 正如Daniel在评论中所说的,您的数组不仅没有很好地持久化,而且创建得很糟糕

您可以在浏览器的控制台中轻松查看它:

>var myArray = [];
<undefined
>myArray["key1"] = "value1";
<"value1"
>myArray
<[]
地图的优点是更容易迭代:

for (var [key, value] of myMap.entries()) {
  console.log(key + " = " + value);
}

正如Daniel在评论中所说的,您的数组不仅没有很好地持久化,而且创建得很糟糕

您可以在浏览器的控制台中轻松查看它:

>var myArray = [];
<undefined
>myArray["key1"] = "value1";
<"value1"
>myArray
<[]
地图的优点是更容易迭代:

for (var [key, value] of myMap.entries()) {
  console.log(key + " = " + value);
}

在阅读之前,你需要对它进行
parse
分析..我在我的示例中遗漏了它。这不是问题所在。否则其他人就不会这么做了worked@Rayon无论如何,谢谢javascript中没有关联数组。您应该使用对象。您正在向数组对象添加属性。它没有序列化为JSON。因此,已解析/新数组没有这样的属性。JSON不是这样工作的。你需要在阅读它之前对它进行
解析
。。我在我的示例中遗漏了它。这不是问题所在。否则其他人就不会这么做了worked@Rayon无论如何,谢谢javascript中没有关联数组。您应该使用对象。您正在向数组对象添加属性。它没有序列化为JSON。因此,已解析/新数组没有这样的属性。JSON不是这样工作的。非常感谢。我会接受这个只要它允许我!非常感谢你。我会接受这个只要它允许我!