【原創】數組的key爲非數字時

正常狀況下,數組的默認key爲數組,如:json

var arr=["ta","tt","te"];console.log(arr[1]);
"tt"

當key爲非直接數字時,兩種狀況,一種爲數字形式字符串,一種爲非數字形式字符串:數組

①、數字形式字符串:數字形式字符串,默認將字符串轉化爲對應的數字下標,其餘爲定義項爲undefinedspa

var arr=[];arr["2"]="team2";arr[4]="team4";console.log(arr);
[2: "team2", 4: "team4"] 



var arr=[];arr["2"]="team2";arr[4]="team4";
console.log(arr.length);
5 


var arr=[];arr["2"]="team2";arr[4]="team4";
for(var key in arr){console.log(arr[key])};
team2 
team4 


var arr=[];arr["2"]="team2";arr[4]="team4";console.log(arr[0]);

undefined 

②、當爲非數字形式字符串時,這時候,實際arr已經不是一個數組,而是一個json對象{key1:"team1",key2:"team2"} 這個json對象的默認length爲0(默認屬性)code

var arr=[];arr["key1"]="team1";arr["key4"]="team4";
console.log(arr.length);

0 

var arr=[];arr["key1"]="team1";arr["key4"]="team4";
console.log(arr);

[key1: "team1", key4: "team4"] 


var arr=[];arr["key1"]="team1";arr["key4"]="team4";
console.log(arr[0]);

undefined 


var arr=[];arr["key1"]="team1";arr["key4"]="team4";
console.log(arr[key1]);

ReferenceError: key1 is not defined

var arr=[];arr["key1"]="team1";arr["key4"]="team4";
console.log(arr["key1"]);

team1 

var arr=[];arr["key1"]="team1";arr["key4"]="team4";
console.log(arr.key1);

team1 

 

因此,若是定義var arr=[];arr["999"]="girl",系統默認將「999」轉化成999,則數組length爲1000,前面的999個數組元素佔用系統內存,若是須要不佔用系統內存對象

能夠寫成json形式,如:blog

var arr=[];arr["_"+999]="girl";console.log(arr);
[_999: "girl"] 

 實際獲取能夠寫成:內存

var arr=[];arr["_"+999]="girl";console.log(arr["_"+999]);
girl 
相關文章
相關標籤/搜索