为什么js的"关联数组"不能转成json字符串而对象可以?

定义这么一个js的“关联数组”:

var arr = new Array();
    arr['school'] = 1;
    arr['team'] = 2;
    alert(JSON.stringify(arr));

得到的结果如图:

[]

一句话,你的 arr 是有两个属性的空数组,数组转字符串当然是展示数组的内容,不会去遍历数组的属性!下面解释:

js不支持这种关联数组的形式但为什么可以取值呢?

因为数组本身也是对象,特殊的对象,

var arr = new Array();
    arr['school'] = 1;
    arr['team'] = 2;

从对象的角度来看,你只是给 arr 对象增加了两个属性,那么你取值,实际上是读取属性,当然是可以取到的的;你给 arr 增加值了么?没有!这个地方,arr 的 length 还是 0 ,也就是说,arr 还是 [] 空数组,那么你用 JSON.stringify() 显示的当然是 []

 

参考答案:https://segmentfault.com/q/1010000012785820

自己解决方式

 

posted @ 2019-01-11 14:59  奇妙鱼  阅读(459)  评论(0编辑  收藏  举报