为什么JSON.stringify()不能在这个数组上工作?

时间:2018-04-06 06:49:22

标签: javascript arrays json

我有一个声明如下的数组:

array = [];

并具有如下所示的值 -

....
ChIJOaegwbTHwoARg7zN_9nq5Uc:"ChIJOaegwbTHwoARg7zN_9nq5Uc"
ChIJXTwCdefHwoAR9Jr4-le12q4:"ChIJXTwCdefHwoAR9Jr4-le12q4"
....

当我执行console.log(array);

时会打印这些值

当我尝试执行JSON.stringify(数组)时,它似乎不起作用。我想使用localStorage.setItem()将此数组存储在localStorage中。

我在浏览器控制台中尝试了一个例子:

var arr=[]
arr[0] = 1
arr[1] = 2
JSON.stringify(arr);

上面的例子非常合适。

请提供您的意见,我已经坚持了几个小时。

4 个答案:

答案 0 :(得分:1)

您正在尝试在数组中分配值,如对象; index只能是o,1,2等,而不是你用过的字符串。如果必须这样做,请创建一个对象数组

答案 1 :(得分:1)

问题是您正在尝试将数组索引设置为字符串'ChIJOaegwbTHwoARg7zN_9nq5Uc''ChIJXTwCdefHwoAR9Jr4-le12q4',尽管浏览器似乎在控制台中打印它,但数组仅将整数键视为有效索引,因此,如果您尝试打印array.length,则会打印0,因此JSON.stringify(array)等操作不会返回任何内容



var array = [];
array['ChIJOaegwbTHwoARg7zN_9nq5Uc'] = "ChIJOaegwbTHwoARg7zN_9nq5Uc";
array['ChIJXTwCdefHwoAR9Jr4-le12q4'] = "ChIJXTwCdefHwoAR9Jr4-le12q4";
console.log(array);
console.log(array.length)




您需要的不是数组而是对象



var obj = {};
obj['ChIJOaegwbTHwoARg7zN_9nq5Uc'] = "ChIJOaegwbTHwoARg7zN_9nq5Uc";
obj['ChIJXTwCdefHwoAR9Jr4-le12q4'] = "ChIJXTwCdefHwoAR9Jr4-le12q4";
console.log(obj);
console.log(JSON.stringify(obj))




答案 2 :(得分:0)

这不是一个数组,而是一个对象。对象不像数组那样进行字符串化。

基本上:

String = 'This is a string'

Array = [
  'This is a string',
  'And so is this'
]

Object = {
  firstString  : 'This is a string',
  secondString : 'And so is this.'
}

答案 3 :(得分:0)

这适用于我a plunker

let array = [];
array.push({"ChIJOaegwbTHwoARg7zN_9nq5Uc":"ChIJOaegwbTHwoARg7zN_9nq5Uc"});
array.push({"ChIJXTwCdefHwoAR9Jr4-le12q4":"ChIJXTwCdefHwoAR9Jr4-le12q4"});
console.log(JSON.stringify(array));

如果您执行console.log(array),您应该会看到以下内容: enter image description here