Javascript 数组对象与类似数组的对象——说明

标签 javascript arrays json object associative-array

我试图对声明为数组对象的类数组对象进行字符串化,发现 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';

因为 test1test2 不是整数。为了修复它,您需要使用基于整数的索引:

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/

相关文章:

javascript - 将树结构转换为层次数组

javascript - ExtJs4 - 动态加载网格列?

c++ - 二维数组重新分配

Java:如何将 HashMap<String, Object> 转换为数组

ios - 使用嵌套对象访问数组并显示键值

javascript - 使用 jQuery 解析 JSON

javascript - Fabric.js BlendColor 图像过滤器

javascript - 使用 Javascript IFFE 获取 Uncaught TypeError 不是一个函数

php - 如何使用 PHP 使用两个键查找单个值?

javascript - jQuery 会正确转义我的引号吗?