js6

數組:內存中連續存儲多個變量的存儲空間,


一、聲明數組:

1.聲明一個空數組

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

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

2.聲明數組的同時初始化數據

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

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

3.創建n個空元素的數組

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


二、訪問數組中的元素

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

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

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


三、數組的length屬性

標識了數組中理論上的元素個數

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


固定套路:


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

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

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


js中的數組有三個不限制:

1.不限制數據類型

2.不限制下標越界

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

3.不限制元素的個數 ?

設置元素時下標越界會自動添加新元素


四、數組的遍歷

遍歷:一次訪問數組中的每個元素

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

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

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


關聯數組/hash數組

索引數組:下標為數字的數組

關聯數組:下標部位數字的數組


???????????????var zse=[];

zse['name']='張三';

???????????????zse['age']='18';

???????????????zse['sex']='boy';

???????????????console.log(zse);


注:關聯數組沒有length屬性

關聯數組不能用for遍歷,要用for....in遍歷

????????????????for(var key in hash){

//key代表關鍵字,即下標

//hash代表數組名

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

例:


var wangshuaikang=[];

?????????????wangshuaikang['pt']='women';

???????????????wangshuaikang['ppt']='chou';

????????????wangshuaikang['pppt']='hei';

wangshuaikang['ppppt']='胸大';

wangshuaikang['pppppt']='無腦';

??????????????console.log(wangshuaikang);

???????????for(var erhou in wangshuaikang){

????????????console.log(wangshuaikang[erhou]);

??????}



五、數組API:

1.轉字符串: 2種

1.將數組中每個元素都轉為字符串,再用逗號分隔: var str=String(arr);

例:

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

???????????????????????var str=String(arr);

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

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

2.將數組中每個元素都轉為字符串,再用自定義下標連接每個元素:

var str=arr.join("自定義連接符")

強調:如果省略參數,默認等效于String

固定套路:

1.無縫拼接: arr.join("")

2.將單詞拼接為句子: arr.join(" ")

3.判斷空數組: arr.join("")==""

4.根據數組中的元素,動態生成頁面元素的內容

例:

轉換為單詞,或句子,如果連接符為空,則和string一樣

????????????????????????var arr=['I','o','v','e'];

???????????????????????var str=arr.join('');

????????????????????????var str2=arr.join('-');

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

?????????????????????????console.log(str2);

2.拼接和截取:

拼接:

??var newArr=

arr1.concat(值1,值2,arr2,....)

將值1,值2,以及arr2中每個元素依次拼接到arr1結尾,返回新數組。

何時使用:將多個元素或其他數組,拼接到當前數組上時

強調:

1.concat無權修改原數組,只能返回新數組

所以,必須用變量接住拼接后的返回值

2.concat可打散數組類型的參數為單個元素


截取:(復制)

??var subArr=arr.slice(starti,endi+1);

復制arr中starti位置開始到endi結束的元素組成子數組返回。

何時:選取數組中指定位置的子數組時

強調: 1.無權修改原數組,只返回新子數組

2.含頭不含尾

3.其實可使用負數參數,表示倒數第n個

簡寫:

1.省略第二個參數,表示一直截取到結尾

2.兩個都省略,表示完整復制原數組中的元素到新數組。

不能只省略第一個參數——報錯

3.splice:刪除,插入,替換

刪除數組中指定位置的元素:

????arr.splice(starti,n):

刪除arr中starti位置開始的n個元素

其實: var deletes=arr.splice(starti,n)

deletes:返回的被刪除的元素組成的臨時子數組。


在數組指定位置插入新元素:

arr.splice(starti,0,值1,值2,...)

在starti位置插入新值

原starti位置的值被向后順移

強調: splice,不支持打散數組參數

插入: splice vs concat

concat只能在開頭或結尾拼接,不能中間插入。但可打散數組類型參數

splice可在任意位置插入,但不可打散數組類型參數。


替換數組中指定位置的元素

arr.splice(starti,n,值1,值2,...)

先刪除starti位置的n個舊元素

再在starti位置插入新值

強調:刪除的個數和插入的個數不必一致

splice可自動調節數組的長度和位置


翻轉: arr.reverse();



六、數組排序

???????????arr.sort();

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

???????????var str=arr.sort();

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



像以下這種函數用arr.sort無法實現排序,這時候就需要用到比較器函數

???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));


???????七.數組API

1.String()把數組轉為字符串

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

????????????????var str=String(arr);

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

不修改原數組

例:

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

??????????????????????var str=String(arr);

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

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


2.join('')拼接,把數組中的元素拼接為字符串 ??

???var arr=['a','b','c','d','e'];

???var str=arr.join('-');

var str=arr.join();//join中不添加任何拼接符的時候默認和String一樣

???console.log(str);

例:

轉換為單詞,或句子,如果連接符為空,則和string一樣

????????????????????????????var arr=['I','o','v','e'];

????????????????????????????var str=arr.join('');

????????????????????????????var str2=arr.join('-');

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

????????????????????????????console.log(str2);


3.concat()拼接

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

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

???console.log(str);


2個數組拼接

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

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

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

???????????????????console.log(str1)/


注:join和concat的區別

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

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


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

特點1.含頭不含尾

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

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

支持負數參數

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

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

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

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

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

var str4=arr.slice(-4,-2);支持負數參數,小數在前,大數在后

?????????????????????console.log(str4);

例:

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

var str=arr.slice(1,5);含頭不含偉

var str=arr.slice(-3,-1);下標可以用負數

var str=arr.slice(2);第二個參數可以省略,從當前下表開始到最后

var str=arr.slice();復制數組

????console.log(str);


5.splice(strati,n)刪除 插入 替換

刪除

??????????????????????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);

例:

刪除:

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

????????????????????????????var str=arr.splice(1,4);

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



添加:

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

???????????????????????????var str=arr.splice(1,0,'9','8');

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


替換:

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

???????????????????????????var str=arr.splice(1,4,'t','e','w');

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


6.reverse()翻轉

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

????????????????????var str=arr.reverse();

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


例:

????????????????var arr=['w','s','k','I','v','o','e'];

??????????????var str=arr.reverse();

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


排序:

例:

?????????????????var arr=[2,3,6,9,7,5,4,1,8];

???????????????????var str=arr.sort();

??????????????????var app=str.reverse();

??????????????????console.log(app);


??????????var arr=[2,3,666,9,76,5,46,16,8,1];


????????function app(a,b){

????????????return a-b;

????????}

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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容