JavaScript里没有Associative Array

很多年来,我一直以为JavaScript里有Associative Array,而我也一直以为我每天在用的Associative Array,其实也只是Sugar Syntax.


var arr;
arr['a'] = 'apple';
arr['b'] = 'banana';

其实它是一个Object.
以下的是它的真正写法:


var arr = {};
arr.a = 'apple';
arr.b = 'banana';

而提取它们的数值的方法也有所不一样:


//For Array:
arr.map(function(value){
    console.log(value);
});

//For Object:
for(var key in arr){
    console.log(arr['key']);
}

有一点一定要注意的,如果你的KEY是一个很大的整数的话,就不能用ARRAY了.


//For Array:
var arr = [];
arr[10000] = 1;

//arr 用了40000 byte(40kb)的内存.

//For Object:
var arr = {};
arr[10000] = 1;

//arr 只用了4 byte的内存.

更新资料:
https://www.xul.fr/javascript/associative.php