我试图对声明为数组对象的类数组对象进行字符串化,发现 JSON.stringify 在定义为数组对象时无法正确处理类数组对象。
为了更清楚,请参见下文,--> jsFiddle
var simpleArray = []; //note that it is defined as Array Object
alert(typeof simpleArray); // returns object -> Array Object
simpleArray ['test1'] = 'test 1';
simpleArray ['test2'] = 'test 2';
alert(JSON.stringify(simpleArray)); //returns []
它工作正常并返回给我 {"test1":"test 1","test2":"test 2"}
当我变了
var simpleArray = [];
至 var simpleArray = {};
.
有人可以阐明一些我可以阅读更多内容的信息或引用资料吗?
编辑:
问题:当typeof simpleArray = []
和 simpleArray = {}
返回的对象,为什么 JSON.stringify 无法返回 {"test1":"test 1","test2":"test 2"}
在这两种情况下?
最佳答案
区别在于索引。当您使用数组 []
时,索引只能是正整数。
所以下面是错误的:
var array = [ ];
array['test1'] = 'test 1';
array['test2'] = 'test 2';
因为 test1
和 test2
不是整数。为了修复它,您需要使用基于整数的索引:
var array = [ ];
array[0] = 'test 1';
array[1] = 'test 2';
或者如果您声明一个 javascript 对象,那么属性可以是任何字符串:
var array = { };
array['test1'] = 'test 1';
array['test2'] = 'test 2';
相当于:
var array = { };
array.test1 = 'test 1';
array.test2 = 'test 2';
关于Javascript 数组对象与类似数组的对象——说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9184414/