亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Javascript數組Array方法解讀

2019-11-20 10:23:40
字體:
來源:轉載
供稿:網友

接上一篇《Javascript數組Array基礎介紹》,這一篇詳細介紹Array的所有方法。

所有數組的方法都定義在Array.prototype上,而Array.prototype本身也是一個數組。

array.concat()

淺復制一份當前數組,并把接收到的參數附加到新數組的末尾。原數組不改變。

語法

array.concat(value1, value2, ..., valueN)
參數為需要合并的數組或非數組值

var arr1 = [1, 2, 3];var obj = {animal : 'monkey'};var arr2 = arr1.concat([4, 5, 6], obj, [7, 8, 9]);// arr1 [1, 2, 3]// arr2 [1, 2, 3, 4, 5, 6, {animal : 'monkey'}, 7, 8, 9]obj.animal = 'tiger';// [1, 2, 3, 4, 5, 6, {animal : 'tiger'}, 7, 8, 9]

可以合并數組或非數組值,但是要注意如果包含對象,對象還是引用原來的對象。

array.join()

返回一個將數組所有元素用分隔符拼接成的字符串,默認分隔符為逗號。

語法

array.join(seperator)
參數為分割符

var arr1 = [1, 2, 3];var str = arr1.join(); // 1,2,3str = arr1.join('#'); // 1#2#3

當將大量字符串片段組裝時,join方法比+元素運算符要快。

利用new Array(3)將生成一個長度為三的空數組,同時結合join()方法,可以實現重復某段字符串。

var str = new Array(3).join('-+'); // -+-+

重復的次數就是數組長度減一,因為字符串是分隔符。

由于數組本身是對象,擁有toString()方法,利用它也能實現將數組拼接成一個字符串,只不過分隔符只能是逗號了。

var arr1 = [1, 2, 3];arr1.toString(); // 1,2,3

實際上它會先調用每一個元素的toString()方法。

array.push()

把一個或多個參數附加在數組末尾,返回數組長度。改變數組自身。

語法

array.push(value1, value2, ..., valueN);
實例

var arr1 = [1, 2, 3];var len = arr1.push(4, 5);console.log(len); // 5console.log(arr1); // [1, 2, 3, 4, 5]

另一種方法也可以實現在數組末尾插入值。

arr1[arr1.length] = 6; // [1, 2, 3, 4, 5, 6]  array.pop()

將數組最后一項刪除,并返回刪除項。改變數組自身。

var arr1 = [1, 2, 3];arr.pop(); // [1, 2] 返回 3

如果數組為空,返回undefined。

array.unshift()

把一個或多個參數插入到數組頭部,返回數組長度。改變數組自身。

var arr1 = [1, 2, 3];var len = arr1.unshift(4, 5);console.log(len); // 5console.log(arr1); // [4, 5, 1, 2, 3]

array.shift()

將數組的第一項刪除,并返回刪除項。改變數組自身。

var arr1 = [1, 2, 3];arr.shift(); // [2, 3] 返回 1

如果數組為空,返回undefined。

array.sort()

這個方法按照每個元素的toString()方法返回的值進行排序,所以一般得不到期望的結果。

var arr1 = [1, 2, 3, 14, 24];arr1.sort(); // [1, 14, 2, 24, 3]

但是sort()方法可以接收一個我們自定義的函數進行比較。比較函數接受兩個參數,尤其sort()默認是升序,所以如果想讓第一個參數位于第二個參數前面就要返回負數,相等返回0,位于后面返回正數。

var compare = function(a, b){  return a - b;}var arr2 = [1, 12, 2, 23, 3 , 5, 4];arr2.sort(compare); // [1, 2, 3, 4, 5, 12, 23]

比較字符串可以結合string.localeCompare()方法來用。

var arr3 = ['F', 'e', 'f', 'E'];arr3.sort(function(a, b){  return a.localeCompare(b);});// ['e', 'E', 'f', 'F'] 

array.reverse()

反轉數組元素順序,返回數組自身。

var arr1 = [1, 4, 3, 2];arr1.reverse(); // [2, 3, 4, 1]

array.slice()

對數組淺復制其中的一段,不改變數組自身。

array.slice(start, end);
方法接受兩個參數,最后一個可以省略,默認是數組自身長度。

var arr1 = [1, 2, 3, 4, 5, 6];arr1.slice(4); // [5, 6]arr1.slice(2, 4); // [3, 4]arr1.slice(-3); // [4, 5, 6]

如果傳入負數,那么會被自動加上數組的長度,試圖變成非負數。
傳入一個絕對值小于數組長度的值,就是從后向前取負數絕對值個數的元素。例如例子中取了后三個元素。

array.splice()

這是數組中最強大也最常用對的方法了,可以實現刪除,插入,替換。

語法

array.slice(start, count, item);
該方法移除一個或多個元素,并用新的元素替代他們。start是開始的位置,count是刪除的數量,item是新增加的元素(item不止一個,也可省略),以數組形式返回刪除的元素。

var arr1 = [1, 2, 3, 4, 5];//刪除arr1.splice(2, 1); // [1, 2, 4, 5] 返回 [3]//插入arr1.splice(3, 0, 6, 7); // [1, 2, 4, 6, 7, 5]//替換arr1.splice(1, 2, 8, 9); // [1, 8, 9, 6, 7, 5] 返回[2, 4]

下面介紹一些ECMAScript5新增的方法,主要是ie8不支持。

indexOf() 與 lastIndexOf()

查找對應項在數組中的索引位置,第二個參數表示對應查找方向的起始位置,返回第一個匹配的位置,如果沒有找到則返回-1;
indexOf()是從前往后查找,lastIndexOf()是從后往前查找。

var arr1 = [1, 2, 3, 4, 3, 2, 1];arr1.indexOf(2); // 1arr1.indexOf(2, 3); // 5arr1.lastIndexOf(3); // 4arr1.lastIndexOf(3, 4) // 2

迭代方法

以下方法接受兩個參數,第一個是每一項運行的函數,第二個函數運行的作用域。
運行函數有三個參數,分別是當前項,位置,數組本身。

array.every()

運行給定函數,如果迭代每一項都返回true,則最終返回true。

var arr1 = [1, 2, 3, 4, 5];arr1.every(function(item, index, array){  return item > 3;});// false

array.some()

運行給定函數,如果迭代中有一項返回true,則最終返回true。

arr1.some(function(item, index, array){  return item > 3;});// true

array.map()

運行給定函數,將迭代中返回的值組成數組,返回該數組。

arr1.map(function(item, index, array){  return item * 2;});// [2, 4, 6, 8, 10]

array.filter()

運行給定函數,將迭代中返回true的元素以數組形式返回

arr1.filter(function(item, index, array){  return item > 3;});// [4, 5]

array.forEach()

運行給定函數,不返回任何值。類似于普通的for循環的功能。

歸并方法

函數接受兩個參數,第一個參數是每一個運行的自定義函數,第二項是作為歸并基礎的初始值。
自定義函數接受四個參數,分別是前一項,當前項,位置,數組。

array.reduce() 與 array.reduceRight()var splitstr = function(prev, item, index, array){  return prev + '#' + item;}var arr1 = [1, 2, 3, 4, 5];arr1.reduce(splitstr, 8); // 8#1#2#3#4#5arr1.reduceRight(splitstr, 8); // 8#5#4#3#2#1

小結

這一篇介紹了數組方法的種種細節和注意問題,下一篇將會介紹數組更高級的用法。本篇后續會添加ECMAScript6 新增加的數組方法的介紹。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品久久久久久久久久另类| 全亚洲最色的网站在线观看| 国产精品jizz在线观看麻豆| 久久久国产精品视频| 日韩美女视频免费看| 中文字幕av一区二区三区谷原希美| 日韩电影在线观看免费| 日韩欧美国产骚| 亲子乱一区二区三区电影| 国产精品福利小视频| 国产97色在线| 菠萝蜜影院一区二区免费| 欧美最猛黑人xxxx黑人猛叫黄| 青青草国产精品一区二区| 精品国产91乱高清在线观看| 疯狂欧美牲乱大交777| 青青草原成人在线视频| 日本国产精品视频| 国产原创欧美精品| 欧美在线视频网| 日本久久亚洲电影| 国内免费久久久久久久久久久| 亚洲免费高清视频| 九九热精品视频在线播放| 国产日韩av在线| 日韩欧美国产网站| 国产欧美 在线欧美| 亚洲欧美制服中文字幕| 久久九九热免费视频| 成人xxxx视频| 91久久久久久久久| 伊人久久久久久久久久| 在线观看中文字幕亚洲| 欧美日韩免费网站| 久久夜色精品国产欧美乱| 免费成人高清视频| 高清欧美性猛交xxxx| 国产精品99久久久久久久久| 日韩在线观看网址| 欧美日韩国内自拍| 欧美在线不卡区| 69影院欧美专区视频| 欧美精品成人在线| 国产欧美精品一区二区三区介绍| 亚洲国模精品一区| 中文字幕av一区二区三区谷原希美| 成人免费视频a| 亚洲黄色在线观看| 欧美www在线| 国产精品久久综合av爱欲tv| 91极品女神在线| 国内精品视频久久| 成人有码视频在线播放| 久久成人这里只有精品| 日韩大陆欧美高清视频区| 欧美极品在线视频| 性欧美亚洲xxxx乳在线观看| 成人黄色av免费在线观看| 欧美日韩亚洲高清| 国产国语刺激对白av不卡| 国产精品一二三在线| 久久久久久久av| 久久久久久国产精品三级玉女聊斋| 亚洲色图av在线| 久久中文字幕一区| 久久亚洲成人精品| 亚洲自拍偷拍视频| 欧美中文在线观看| 成人黄色片网站| 欧美性猛交xxxx黑人猛交| 国产午夜精品免费一区二区三区| 91av中文字幕| 亚洲电影免费观看高清完整版在线| 国产一区二区动漫| 国产精品91在线| 日韩成人av网址| 91探花福利精品国产自产在线| 久久国产精品首页| 97免费在线视频| 欧美高跟鞋交xxxxxhd| 日韩欧美精品中文字幕| 欧美成人亚洲成人| 亚洲综合第一页| 亚洲第一在线视频| 欧美电影免费观看电视剧大全| 欧美日韩另类字幕中文| 97免费视频在线播放| 欧美成人免费全部观看天天性色| 欧美大尺度激情区在线播放| 久久免费精品日本久久中文字幕| 欧美裸体xxxxx| 欧美电影在线观看高清| 日韩亚洲精品电影| 久久成人这里只有精品| 成人黄色短视频在线观看| 日本高清视频精品| 一区二区三区亚洲| 中文字幕成人精品久久不卡| 欧美日韩国产一中文字不卡| 国产69精品久久久久99| 欧洲中文字幕国产精品| 国产精品久久久| 亚洲qvod图片区电影| 日韩精品亚洲视频| 欧洲亚洲免费在线| 国产精品www色诱视频| 91中文在线观看| 亚洲综合精品伊人久久| 亚洲第一区中文99精品| 国产视频精品在线| 欧美福利视频在线| 91免费精品视频| 国产午夜精品一区理论片飘花| 亚洲综合日韩中文字幕v在线| 亚洲综合国产精品| 国产精品美女久久久免费| 一区二区三区久久精品| 亚洲成人999| 欧美激情亚洲综合一区| 成人黄色中文字幕| 人妖精品videosex性欧美| 国产欧美日韩精品丝袜高跟鞋| 久久久久久久成人| 国产一区二区日韩| 午夜精品久久久久久久久久久久久| 成人黄色大片在线免费观看| 成人久久一区二区三区| 欧美国产日产韩国视频| 久久久久免费视频| 久久久噜噜噜久久久| 日韩中文字幕不卡视频| 国产日产欧美a一级在线| 国产成人在线一区| 久久成人精品一区二区三区| 国产精品亚发布| 国产999精品| 国产美女精品免费电影| 成人免费网站在线| 久久成人18免费网站| 国产精品久久久久久久久久久久| 欧美黑人性生活视频| 亚洲性av在线| 日韩在线中文字| 亚洲最大福利视频| 国产精品免费久久久| 日韩激情视频在线| 国产精品久久久久久av下载红粉| 欧美大全免费观看电视剧大泉洋| 欧美放荡办公室videos4k| 亚洲精品久久久久| 国产精品中文字幕在线观看| 亚洲国产第一页| 色噜噜国产精品视频一区二区| 国产精品9999| 色偷偷噜噜噜亚洲男人的天堂| 亚洲成人亚洲激情| 亚洲人成网站777色婷婷| 免费91麻豆精品国产自产在线观看| 丰满岳妇乱一区二区三区| 国产一区二区三区精品久久久| 精品国产美女在线| 欧美美女操人视频| 亚洲人成在线观看网站高清| 国产亚洲免费的视频看|