JavaScript 六、數(shù)組API
不與眾生
已關(guān)注
2018-05-16 19:57 · 字?jǐn)?shù) 1140 · 閱讀 2 ·? 日記本
數(shù)組:內(nèi)存中連續(xù)存儲(chǔ)多個(gè)變量的存儲(chǔ)空間
一匆骗、聲明數(shù)組:
1.聲明一個(gè)空數(shù)組
? ? ? ? ? ? ? var arr=[];
? ? ? ? ? ? ? var arr=new Array()
2.聲明數(shù)組的同時(shí)初始化數(shù)據(jù)
var arr=['值1','值2','值3']麻敌;
var arr=new Array('值1','值2','值3');
3.創(chuàng)建n個(gè)空元素的數(shù)組
? ? ? ? ? ? ? var arr=new Array(n);
二赤拒、訪問數(shù)組中的元素
下標(biāo):數(shù)組中唯一標(biāo)識(shí)一個(gè)元素存儲(chǔ)位置的序號
下標(biāo)默認(rèn)從0開始跟继,逐漸遞增裙顽,不重復(fù)
arr[i]訪問下標(biāo)為i位置的元素
三亭珍、數(shù)組的length屬性
標(biāo)識(shí)了數(shù)組中理論上的元素個(gè)數(shù)
任何情況下敷钾,數(shù)組的長度永遠(yuǎn)等于最大下標(biāo)+1
固定套路:
訪問數(shù)組中的最后一個(gè)元素arr[arr.length-1]
訪問數(shù)組中倒數(shù)第n個(gè)元素 arr[arr.length-n]
末尾追加新元素:arr[arr.length]=新值
js中的數(shù)組有三個(gè)不限制:
1.不限制數(shù)據(jù)類型
2.不限制下標(biāo)越界
獲取元素時(shí),下標(biāo)越界肄梨,不報(bào)錯(cuò)阻荒,返回undefined
3.不限制元素的個(gè)數(shù)?
設(shè)置元素時(shí)下標(biāo)越界會(huì)自動(dòng)添加新元素
四、數(shù)組的遍歷
遍歷:訪問數(shù)組中的每個(gè)元素
? ? ? ? ? ? ? ? ? ? for(var i=0;i
console.log(arr[i])众羡;//輸出數(shù)組中的當(dāng)前元素
? ? ? ? ? ? ? ? ? ? }?
關(guān)聯(lián)數(shù)組/hash數(shù)組
索引數(shù)組:下標(biāo)為數(shù)字的數(shù)組
關(guān)聯(lián)數(shù)組:下標(biāo)不位數(shù)字的數(shù)組
? ? ? ? ? ? ? var zse=[];
zse['name']='張三';
? ? ? ? ? ? ? zse['age']='18';
? ? ? ? ? ? ? zse['sex']='boy';
? ? ? ? ? ? ? console.log(zse);
注:關(guān)聯(lián)數(shù)組沒有l(wèi)ength屬性
關(guān)聯(lián)數(shù)組不能用for遍歷侨赡,要用for....in遍歷
? ? ? ? ? ? ? ? for(var key in hash){
//key代表關(guān)鍵字,即下標(biāo)
//hash代表數(shù)組名
? ? ? ? ? ? ? ? }
var zse=[];
? ? ? ? ? ? ? zse['name']='張三';
? ? ? ? ? ? ? zse['age']='18';
? ? ? ? ? ? ? zse['sex']='boy';
? ? ? ? ? ? ? console.log(zse);
? ? ? ? ? ? ? for(var key in zse){
? ? ? ? ? ? ? console.log(zse[key]);
? ? ? ? ? ? ? }
五、數(shù)組API
1.String()把數(shù)組轉(zhuǎn)為字符串
練習(xí):
? ? ? ? ? ? ? ? var arr=[1,2,3,4,5];
? ? ? ? ? ? ? ? var str=String(arr);
? ? ? ? ? ? ? ? console.log(str);
不修改原數(shù)組
2.join('')拼接羊壹,把數(shù)組中的元素拼接為字符串?
練習(xí):
? var arr=['a','b','c','d','e'];
? var str=arr.join('-');
var str=arr.join();//join中不添加任何拼接符的時(shí)候默認(rèn)和String一樣
? console.log(str); */
3.concat()拼接
練習(xí):
? var arr=[1,2,3,4,5];
? var str=arr.concat('a','b');
? console.log(str);
2個(gè)數(shù)組拼接
? ? ? ? ? ? ? ? ? var arr2=['true','false'];
? ? ? ? ? ? ? ? ? var str1=arr.concat(arr2);
? ? ? ? ? ? ? ? ? console.log(str1);
注:join和concat的區(qū)別
join適用于把字母拼接為單詞蓖宦,把單詞拼接為句子,拼出來的是字符串
concat是給數(shù)組后面拼接新元素舶掖,或把兩個(gè)數(shù)組拼接球昨,拼出的還是數(shù)組
4.slice(strati,endi+1)截取
特點(diǎn)1.含頭不含尾
特點(diǎn)2.如果省略第二個(gè)參數(shù)默認(rèn)從第一個(gè)參數(shù)開始截取到末尾
特點(diǎn)3.如果兩個(gè)參數(shù)都省略相當(dāng)于復(fù)制原字符串
支持負(fù)數(shù)參數(shù)
練習(xí):
? ? ? ? ? ? ? ? ? ? var arr=[1,2,3,4,5];
var str1=arr.slice(1,3);//從下標(biāo)為1的位置截取到下標(biāo)為3的位置
? ? ? ? ? ? ? ? ? ? console.log(str1);
var str2=arr.slice(1);//如果省略第二個(gè)參數(shù)默認(rèn)從第一個(gè)參數(shù)開始截取到末尾
var str3=arr.slice();//如果兩個(gè)參數(shù)都省略相當(dāng)于復(fù)制原字符串
var str4=arr.slice(-4,-2);//支持負(fù)數(shù)參數(shù),小數(shù)在前,大數(shù)在后
? ? ? ? ? ? ? ? ? ? console.log(str4);
5.splice(strati,n)刪除 插入 替換
練習(xí):
//刪除
? ? ? ? ? ? ? ? ? ? ? var arr=[1,2,3,4,5];
var str=arr.splice(1,2);//表示從下標(biāo)為1的位置處開始刪除2個(gè)
? ? ? ? ? ? ? ? ? ? ? console.log(str);
? ? ? ? ? ? ? ? ? ? ? console.log(arr);
//插入
? ? ? ? ? ? ? ? ? ? ? ? var arr=[1,2,3,4,5];
var str=arr.splice(1,0,'a','b','c');//從下標(biāo)為1的位置處開始刪除0個(gè)并插入新元素
? ? ? ? ? ? ? ? ? ? ? ? console.log(arr);
//替換
? ? ? ? ? ? ? ? ? ? ? ? var arr=[1,2,3,4,5];
var str=arr.splice(1,2,'a','b');//從下標(biāo)為1的位置處開始刪除2個(gè)并替換新元素
? ? ? ? ? ? ? ? ? ? ? ? console.log(arr);
6.reverse()翻轉(zhuǎn)
練習(xí):
? ? ? ? ? ? ? ? ? ? var arr=[1,2,3,4,5];
? ? ? ? ? ? ? ? ? ? var str=arr.reverse();
? ? ? ? ? ? ? ? ? ? console.log(str);
六眨攘、數(shù)組排序
? ? ? ? ? arr.sort();
? ? ? ? ? ? ? var arr=[2,4,3,5,1];
? ? ? ? ? var str=arr.sort();
? ? ? ? ? console.log(str);
像以下這種函數(shù)用arr.sort無法實(shí)現(xiàn)排序主慰,這時(shí)候就需要用到比較器函數(shù)
? var arr=[1,12,22,13,23,33,3,2];
? function cmp(a,b){
return a-b;//升序排列
return b-a;//降序排列
? }
? ? ? console.log(arr.sort(cmp));