數組
數組是某類數據類型的有序集合,數據類型可以是number(數值),
string(字符串),undefined(聲明未賦值),null(空),boolean(布爾類型),
對象(object)
一個數組裏面可以使用多種數據類型,數組就動態的,不需要指定大小;
數組裏面的每個值叫元素,每個元素在數組中都有數字位置編號,
也就是下標 從0開始;
創建數組的方式:
1.使用構造函數Arrar去定義數組
var color =new Array("red","green");//使用Array函數定義數組,(直接寫元素)
console.log(typeof color,color);//object,["red","green"]
var arr= new Array(2);
//如果new Array()後接的是一個數值類型,那麼這個數字就是數組的長度,數組中的每個元素都是undefined
console.log(arr);//[2]
console.log(arr.length);//獲取數組的長度
console.log(arr[0],arr[1]);//獲取數組中的每個值
var arr01 =new Array();//new Array() 括號中沒放任何東西,那麼創建的是一個空數組
arr01 = [1,2,3,4];//對空數組重新賦值
2.使用字面量表示法
var arr02 = [1,"2",undefined,true,null,[1,2],{a:1}];
//使用數組字面量表示法定義數組,數組的元素可以是任意數據類型
console.log(arr02);
數組的屬性
數組的屬性,length(長度),個constrctor(構造方法)
var arr03=[1,12,123,1234,12345,123456];
console.log(arr03.length);//獲取數組的長度
//數組的最小下標爲0,最大下標等於長度減1
var num = arr03.length+2;//num=8
console.log(arr03);
arr03[8] = 12345678;
console.log(arr03);
console.log(arr03[6],arr03[7]);
//如果通過索引賦值,索引超過了數組的長度,數組的長度發生變化,
//前面沒有賦值的元素會使用undefined補齊(自動補齊)
var arr04 = [1,2,3];
console.log(arr04.length);//3
arr04.length=2;
console.log(arr04);//[1,2]
//如果數組重新賦值的長度小於數組原長度,那麼輸出的是賦值後的數組長度的內容
var arr05 = [1,2,3,4,5];
arr05.length=7;
console.log(arr05);//[1,2,3,4,5,undefined,undefined]
//數組重新賦值的長度大於原來的長度,那麼輸出的是賦值後的數組長度的內容,後面自動適應undefined補齊
arr05[5] =6;//通過給數組中的某個元素重新賦值,可以改變該元素
arr05[6] = 7;
console.log(arr05);//[1,2,3,4,5,6,7]
數組的大小是有限制的,最小是0,最大是2^23-1、
不建議直接改數組的大小,訪問數組的時候,要確保索引不會越界
清空數組:
//1.通過改變數組的長度去清空數組
arr05.length=0;
console.log(arr05);
//2.使用delete
console.log(arr04);
delete arr04[1];
//delete根據下標去刪除數組中的某一項,只刪除元素,被刪除的元素使用undefined代替,數組長度不變
console.log(arr04);
//3.使用fill()
console.log(arr02.fill());//使用undefined填充整個數組,數組長度不變
//數組遍歷
var arr06=['小米','小龍'];
for(var i=0;i<arr06.length;i++){
console.log(arr06[i]);
}
for(var j in arr06){//遍歷對象一般用for in
console.log(arr06[j]);
//j是對應下標,arr06[j]是數組中下標對應的元素;
}
//constructor,用來進行對象類型的判斷的
var arr08=[];
var obj={};
var str="123";
console.log(arr.constructor);
console.log(obj.constructor);
console.log(str.constructor);
數組分爲下標數組和緯度數組
下標數組分爲索引數組和關聯數組
索引數組就是下標爲numer(數值類型)的數組
關聯數組就是下標爲string(字符串)的數組
關聯數組的元素不計入數組的長度,所以沒辦法通過下標去訪問
索引數組和關聯數組的區別
索引數組用於儲存數據,優勢在與迭代方便
關聯數組用於存放對應的數據格式,特定的key對應特定vakue值但是迭代麻煩
var arr09 = [];
arr09["name"]="小米";
arr09['age']=18;
arr09['sex']="男";
arr09["location"]="廣州"
console.log(arr09);
for( var i in arr09){
console.log(arr09[i]);
// if(i=="name")document.write("他叫"+arr09[i]);
// if(i=="age")document.write("今年"+arr09[i]);
// if(i=="sex")document.write("性別"+arr09[i]);
// if(i=="location")document.write("來自"+arr09[i]);
}
document.write("他叫"+arr09.name+"今年"+arr09.age+"性別"+arr09.sex+"來自"+arr09.location);
var arr07 = [];
arr07["name"]="小紅";
arr07['age']=18;
arr07['sex']="女";
arr07["location"]="廣州";
arr07["subject"]=[];
arr07["subject"]["math"]="數學";
arr07["subject"]["chinese"]="語文";
arr07["subject"]["English"]="英語";
arr07["subject"]["PE"]="體育";
arr07["hobby"]=[];
arr07["hobby"]["football"]="足球";
arr07["hobby"]["reading"]="看書";
console.log(arr07);
for(var i in arr07){
console.log(arr07[i]);
if(arr07[i].constructor==Array){
for(var j in arr07[i]){
console.log(arr07[i][j]);
}
}
}
document.write("<br />"+"她叫"+arr07.name+",今年"+arr07.age+",性別"+arr07.sex+",來自"+arr07.location+",<br />學科:"+arr07.subject.math+"、"+arr07.subject.chinese+"、"+arr07.subject.English+"、"+arr07.subject.PE+"。<br />興趣:"+arr07.hobby.football+"、"+arr07.hobby.reading+"。");
// document.write('<br>她叫'+arr07['name']+',今年'+arr07['age']+'歲,性別'+arr07['sex']+',籍貫'+arr07['location']+',她的學科有'+arr07['subject']['math']+','+arr07['subject']['chinese']+','+arr07['subject']['English']+';她的愛好有'+arr07['hobby']['football']+'和'+arr07['hobby']['reading']);
//數組類型:isArray()
/*
* 使用isArray()函數來判定數組,Array.isArray(變量名),返回true,說明是數組,返回fales是非數組
*/
var arr10=[];
var obj01={};
console.log(Array.isArray(arr10));
console.log(Array.isArray(obj01));