JavaScript 六、數(shù)據(jù)API

數(shù)組:內(nèi)存中連續(xù)存儲多個變量的存儲空間


一、聲明數(shù)組:

1.聲明一個空數(shù)組

???????????????var arr=[];

???????????????var arr=new Array()

2.聲明數(shù)組的同時初始化數(shù)據(jù)

var arr=['值1','值2','值3'];

var arr=new Array('值1','值2','值3');

3.創(chuàng)建n個空元素的數(shù)組

???????????????var arr=new Array(n);


二、訪問數(shù)組中的元素

下標:數(shù)組中唯一標識一個元素存儲位置的序號

下標默認從0開始,逐漸遞增,不重復(fù)

arr[i]訪問下標為i位置的元素


三、數(shù)組的length屬性

標識了數(shù)組中理論上的元素個數(shù)

任何情況下,數(shù)組的長度永遠等于最大下標+1


固定套路:


訪問數(shù)組中的最后一個元素arr[arr.length-1]

訪問數(shù)組中倒數(shù)第n個元素 arr[arr.length-n]

末尾追加新元素:arr[arr.length]=新值


js中的數(shù)組有三個不限制:

1.不限制數(shù)據(jù)類型

2.不限制下標越界

獲取元素時,下標越界,不報錯,返回undefined

3.不限制元素的個數(shù) ?

設(shè)置元素時下標越界會自動添加新元素

四、數(shù)組的遍歷

遍歷:訪問數(shù)組中的每個元素

?????????????????????for(var i=0;i

console.log(arr[i]);//輸出數(shù)組中的當前元素

?????????????????????} ?


關(guān)聯(lián)數(shù)組/hash數(shù)組

索引數(shù)組:下標為數(shù)字的數(shù)組

關(guān)聯(lián)數(shù)組:下標不位數(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)鍵字,即下標

//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中不添加任何拼接符的時候默認和String一樣

???console.log(str); */


3.concat()拼接

練習(xí):

???var arr=[1,2,3,4,5];

???var str=arr.concat('a','b');

???console.log(str);


2個數(shù)組拼接

???????????????????var arr2=['true','false'];

???????????????????var str1=arr.concat(arr2);

???????????????????console.log(str1);


注:join和concat的區(qū)別

join適用于把字母拼接為單詞,把單詞拼接為句子,拼出來的是字符串

concat是給數(shù)組后面拼接新元素,或把兩個數(shù)組拼接,拼出的還是數(shù)組


4.slice(strati,endi+1)截取

特點1.含頭不含尾

特點2.如果省略第二個參數(shù)默認從第一個參數(shù)開始截取到末尾

特點3.如果兩個參數(shù)都省略相當于復(fù)制原字符串

支持負數(shù)參數(shù)

練習(xí):

?????????????????????var arr=[1,2,3,4,5];

var str1=arr.slice(1,3);//從下標為1的位置截取到下標為3的位置

?????????????????????console.log(str1);

var str2=arr.slice(1);//如果省略第二個參數(shù)默認從第一個參數(shù)開始截取到末尾

var str3=arr.slice();//如果兩個參數(shù)都省略相當于復(fù)制原字符串

var str4=arr.slice(-4,-2);//支持負數(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);//表示從下標為1的位置處開始刪除2個

??????????????????????console.log(str);

??????????????????????console.log(arr);


//插入

????????????????????????var arr=[1,2,3,4,5];

var str=arr.splice(1,0,'a','b','c');//從下標為1的位置處開始刪除0個并插入新元素

????????????????????????console.log(arr);

//替換

????????????????????????var arr=[1,2,3,4,5];

var str=arr.splice(1,2,'a','b');//從下標為1的位置處開始刪除2個并替換新元素

????????????????????????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無法實現(xiàn)排序,這時候就需要用到比較器函數(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));

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容