中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

JavaScript之數組(Array)詳解
來源:易賢網 閱讀:1254 次 日期:2015-04-02 15:55:15
溫馨提示:易賢網小編為您整理了“JavaScript之數組(Array)詳解”,方便廣大網友查閱!

ECMAScript的數組與其他語言中的數組有著相當大的區別。雖然ECMAScript中的數組也是有序列表,但是它數組你的每一項可以保存任何類型的數據。ECMAScript數組的大小是可以動態調整的。

創建數組的基本方式有兩種。第一種是使用Array構造函數,如下所示:

代碼如下:

var colors = new Array();

如果知道數組要保存的項目數量,也可以給構造函數傳遞參數,而該參數會自動變成length屬性的值,如下:

代碼如下:

var colors = new Array(20);

也可以向Array構造函數中傳遞數組中應包含的項,如下代碼所示:

代碼如下:

var colors = new Array("red","blue");

另外,使用Array構造函數時也可以省略new操作符,如下所示:

代碼如下:

var colors = Array(20);

創建數組的第二種方式是使用數組字面量表示法。數組字面量由一對包含數組項的方括號表示,多個數組項之間用逗號隔開,如下所示:

代碼如下:

var color = ["red","blue"];

var names = [];

var values = [1,2,]//IE8及之前3項,其他2項,不建議使用

與對象一樣,在使用數字字面量表示法時,也不會調用Array的構造函數。

在讀取和設置數組的值時,要使用方括號并提供相應值的基于0的數字索引,如下所示:

代碼如下:

var colors = ["red","blue"]; //定義數組

alert(colors[0]); //red

colors[1] = "black" //修改第2項

colors[2] = "brown" //新增第3

數組的項數保存在其length屬性中,這個屬性始終會返回0或更大的數字,如下所示:

代碼如下:

var colors = ["red","blue"]; //定義數組

var names=[];

alert(colors.length); //3

alert(names.length) //0

值得注意的是,數組的length值不是只讀的。因此,通過設置此值,可以從數組的末尾移出項或向數組添加項,如下:

代碼如下:

var colors = ["red","blue"];

colors.length = 1;

alert(colors[1]); //undefined

利用length屬性也可以方便的向數組末尾添加數據:

代碼如下:

var colors = ["red","blue"];

colors[colors.length] = "black"; //在位置2新增

colors[colors.length] = "brown"; //在位置3新增

1、檢測數組

對于一個網頁或一個全局作用域而言,使用instanceof操作符可以做到:

代碼如下:

if(value instanceof Array){

// 執行操作

}

instanceof操作符局限性在于全局作用域,如果網頁包含多個框架,就存在兩個以上的全局執行環境。為了解決這個問題,ECMAScript5新增了Array.isArray()方法,使用如下:

代碼如下:

if(Array.isArray(value)){

// 執行操作

}

2、轉化方法

調用數組的toString()方法會返回由數組中每個值的字符串形式拼接而成的一個以逗號分隔的字符串。而調用valueOf()返回還是數組。如下所示:

代碼如下:

var colors = ['red', 'blue', 'green'];

alert(colors.toString()); //red,blue,green

alert(colors.valueOf()); //red,blue,green

alert(colors) //red,blue,green

數組繼承的toLocalString()、tiString()和valueOf()方法,在默認情況下都會以逗號分隔符的字符串形式返回數組項。而如果使用join()方法,則可以使用不同的分隔符來構建這個字符串。join()方法只接受一個參數,即用作分隔符的字符串,如下所示:

代碼如下:

var colors = ['red', 'blue', 'green'];

alert(colors.join(',')); //red,blue,green

alert(colors.join('|')); //red|blue|green

如果數組中的某一項值為null或者undefied,那么該值在join()、toLocalString()、tiString()和valueOf()方法返回結果以空字符串表示。

3、棧方法

Javascript專門為數組提供了push()和pop()操作,以便實現類似棧的行為。

push()方法可以接收任意數量的參數,把他們逐個添加到數組末尾,并返回修改后數組的長度。pop()方法則從數組末尾溢出最后一項,減少數組的length值,然后返回移出的項。

代碼如下:

var colors = new Array(); //定義數組

var count = colors.push("red", "blue"); //壓入兩項

alert(count); //2

count = colors.push("black"); //壓入另一項

alert(count); //3

var item = colors.pop(); //彈出最后一項

alert(item); //"black"

alert(colors.length); //2

4、隊列方法

棧數據結構的訪問規則是LIFO(后進先出),而隊列的訪問規則是FIFO(先進先出)。隊列在列表末端添加項,在前端移出項。

shift()方法能夠移除數組中的第一項,并返回該項,數組的length-1。結合push()和shift()方法,可以像使用隊列一樣使用數組,如下所示:

代碼如下:

var colors = new Array();

var count = colors.push("red", "blue");

count = colors.push("black");

alert(count);

var item = colors.shift(); //取得第一項

alert(item); //"red"

alert(color.length); //2

ECMAScript還為數組提供了unshift()方法。unshift()和shift()方法用途相反:它在數組前端添加任意個項并返回新數組的長度。因此,同時使用unshift()和shift()方法,可以從相反方向來模擬隊列,即在數組前端添加新項,從數組末端移出項,如下所示:

代碼如下:

var colors = new Array();

var count = colors.push("red", "green");

alert(count); //2

count = colors.unshift("black"); //推入另一項

alert(count); //3

var item = colors.pop(); //取得最后一項

alert(item) //green

alert(colors.length) //2

5、重排序方法

數組中已經存在兩個可以直接用來重排序的方法:reverse()和sort()。reverse()方法會按照反轉數組項的排序。

代碼如下:

var values = [2, 1, 3, 4, 5];

values.reverse();

alert(values); //5,4,3,2,1

默認情況下,sort()方法按照升序排列數組項,調用每一項的toString()方法,比較字符串,以確定如何排序。即使數組中的每一項都是數值,sort()方法比較的都是字符串。

代碼如下:

var values = [12, 11, 3, 4, 5];

values.sort();

alert(values); //12,11,3,4,5

我們可以通過一個比較函數當作參數傳遞給sort()方法。如下:

代碼如下:

function compare(value1, value2) {

if (value1 < value2) {

return -1

} else if (value1 > value2) {

return 1

} else {

return 0

}

}

var values = [0, 1, 5, 10, 15];

values.sort(compare);

alert(values); //0,1,5,10,15

6、操作方法

ECMAScript為操作在數組中提供了很多方法。其中,concat()方法可以基于當前數組中的所有項創建一個新數組。

代碼如下:

var colors = ["red", "green", "blue"];

var colors2 = colors.concat("yellow", ["black", "brown"]);

alert(colors); //red,green,blue

alert(colors2); //red,green,blue,yellow,black,brown

slice()方法,它能夠基于當前數組的一個項或多個項創建新數組,它可以接收一個或兩個參數,即要返回項的起始和結束位置。一個參數時,返回該參數指定位置開始到當前數組末尾的所有項。兩個參數則返回起始到指定位置的所有項——不包括結束位置的項。注意,slipe()方法不影響原始數組。

代碼如下:

var colors=["red","green","blue","black","brown"];

var colors2=colors.slice(1);

var colors3=colors.slice(1,4);

alert(colors2); //green,blue,black,brown

alert(colors3); //green,blue,black

slice()方法刪除:可以刪除任意數量的項,只需指定2個參數:要刪除的第一項的位置和要刪除的項數。

slice()方法插入:可以向指定位置插入任意數量的項,只需提供3個參數:起始位置、0(要刪除的項數)和要插入的項。

slipe()方法替換:可以項指定位置插入任意數量的項,且同時刪除任意數量的項,只需指定3個參數:起始位置、要刪除的項數和要插入的任意數量的項。

代碼如下:

var colors = ["red", "green", "blue"];

//刪除

var removed = colors.slice(0, 1); //刪除第1項

var colors3 = colors.slice(1, 4);

alert(colors); //green,blue

alert(removed); //red

//插入

removed = colors.slice(1, 0,"yellow","orange"); //從位置1開始插入

alert(colors); //green,yellow,orange,blue

alert(removed); //空數組

//替換

removed = colors.slice(1, 1,"red","purple"); //從位置1開始插入

alert(colors); //green,"red","purple",orange,blue

alert(removed); //"yellow"

7、位置方法

ECMAScript5為數組提供了兩個位置方法:indexOf()和lastIndexOf()。這兩個方法都接收兩個參數:要查找的項和表示查找起點位置的索引(可選)。其中indexOf()方法從數組的開頭開始先后查找,lastIndexOf()方法則從數組的末尾開始向前查找。

這兩個方法都返回要查找的項在數組中的位置,在沒有找到的情況下返回-1。

代碼如下:

var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];

alert(numbers.indexOf(4)) //3

alert(numbers.lastIndexOf(4)) //5

alert(numbers.indexOf(4, 4)) //5

alert(numbers.lastIndexOf(4, 4)) //3

8、迭代方法

ECMAScript5為數組定義了5個迭代方法。每個方法都接受兩個參數,第一個是進行迭代的函數,第二個是該函數的作用域對象【可選】。

進行迭代的函數接受三個參數,第一個是數組中要進行迭代的元素的值,第二個是數組候總要進行迭代的元素的位置,第三個是迭代數組本身。

1. every() 對數組中的每一項運行給定的函數,如果該函數對每一項都返回true,則返回true

2. filter() 對數組中的每一項運行給定的函數,返回該函數返回true的項組成的數組。

3. forEach() 對數組中的每一項運行給定的函數,這個方法沒有返回值 4. map() 對數組中的每一項運行給定的函數,返回每次函數調用的結果組成的數組

5. some() 對數組中的每一項運行給定的函數,如果該函數對任意一項返回true,則返回true

這些迭代方法支持的瀏覽器有,IE9+,Firefox2+,Safari3+,Opera 9.5+,chrome

在這些方法中,最相似的是every()和some(),它們都是用于查詢數組中的項是否滿足某個條件。對every()來說,傳入的函數必須對每一項都返回true,這個方法才返回true;否則,他就返回false。而some()方法則是只要傳入的函數對數組中某一項返回true,就返回true。

代碼如下:

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

var everyResult = num.every(function(item, index, array) {

if(item > 2) {

return true;

}

});

alert(everyResult); //false

var someResult = num.some(function(item) {

if(item > 2) {

return true;

}

});

alert(someResult); //true

filter()是利用指定的函數確定是否在返回的數組中包含某一項。

代碼如下:

var num = [1,2,3,4,5,4,3,2,1];

var filterResult = num.filter(function(item) {

if(item > 2) {

return true;

}

});

alert(filterResult); //[3,4,5,4,3]

map()也返回一個數組,而這個數組的每一項都是在原始數組中的對應項上運行傳入函數的結果。

代碼如下:

var num = [1,2,3,4,5,4,3,2,1];

var mapResult = num.map(function(item) {

if(item > 2) {

return true;

}

}); //[2,3,6,8,10,8,6,4,2]

forEach()是對數組中的每一項運行傳入的函數。這個方法沒有返回值,本質上與使用for循環迭代數組一樣。

代碼如下:

var num = [1,2,3,4,5,4,3,2,1];

num.forEach(function(item) {

// 執行操作

});

9、歸并方法

ECMAScript5中新增了兩個方法:reduceRight() 和 reduce()。這兩個方法都接受兩個參數:第一個是用來迭代的數組的函數,這個函數有四個參數分別是,前一個值,當前值,項的索引,數組對象。然而這個函數的任何值都會作為第一個參數自動傳給下一項。第二個是作為第一個函數中第一個參數的初始值 。

代碼如下:

var nums = [1,2,3,4,5];

var sum = nums.reduce(function(prev, cur, index, array) {

return prev + cur;

});

alert(sum);//15

更多信息請查看IT技術專欄

更多信息請查看腳本欄目
易賢網手機網站地址:JavaScript之數組(Array)詳解
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美伦理91i| 欧美sm视频| 最新国产乱人伦偷精品免费网站 | 国产欧美日韩专区发布| 国产一区二区三区免费不卡| 亚洲高清自拍| 亚洲一级二级在线| 久久蜜桃av一区精品变态类天堂| 欧美不卡视频一区发布| 国产精品地址| 亚洲国产精品小视频| 亚洲午夜av电影| 久久亚洲视频| 国产精品黄色在线观看| 亚洲第一页自拍| 午夜精品久久久久久久久久久久 | 国产在线国偷精品产拍免费yy| 亚洲精华国产欧美| 欧美在线免费观看| 欧美日韩免费观看中文| 在线不卡中文字幕| 午夜在线精品| 欧美三级精品| 亚洲黄色小视频| 久久久久久久一区二区| 国产精品福利在线| 亚洲精品欧美| 久久夜色精品| 国产欧美一区二区三区另类精品| 99国产精品久久久久久久成人热| 久久午夜激情| 国产一区二区黄色| 亚洲免费视频在线观看| 欧美喷水视频| 亚洲精品乱码久久久久久按摩观| 久久国产免费| 国产欧美韩日| 亚洲制服丝袜在线| 国产精品久久福利| 在线综合亚洲欧美在线视频| 欧美高清在线观看| 亚洲国产精品一区制服丝袜| 久久久久欧美| 国产一区在线视频| 久久激情综合| 国产日韩欧美在线一区| 亚洲影院色无极综合| 欧美二区在线观看| 在线观看日产精品| 久久精品国产欧美亚洲人人爽| 欧美日韩国产在线播放网站| 亚洲国语精品自产拍在线观看| 久久视频在线看| …久久精品99久久香蕉国产| 玖玖玖国产精品| 狠狠色狠狠色综合系列| 欧美在线日韩| 黄色亚洲网站| 欧美刺激性大交免费视频| 亚洲黄色视屏| 欧美日韩一区免费| 一本色道久久精品| 国产精品国产三级国产专播品爱网| 中文欧美在线视频| 国产精品乱人伦中文| 一区二区三区视频免费在线观看| 欧美日韩在线播放一区| 亚洲欧美成人精品| 国产亚洲精品久久久| 亚洲自拍另类| 国产日韩欧美综合| 久久综合激情| 亚洲精品美女久久久久| 欧美日本国产| 亚洲欧美综合网| 国产一区二区成人| 免费欧美电影| 亚洲黄色三级| 欧美少妇一区| 久久久久国内| 亚洲国产精品久久久久秋霞影院| 欧美激情91| 99亚洲伊人久久精品影院红桃| 欧美日韩精品不卡| 午夜国产精品视频| 国产精品羞羞答答xxdd| 久久国产黑丝| 亚洲激情在线| 欧美日韩国产成人在线免费| 一区二区三区四区五区在线| 欧美日韩国产一区二区三区| 中文有码久久| 国产一区二区电影在线观看| 噜噜爱69成人精品| 99在线热播精品免费99热| 国产精品国产三级国产专播品爱网| 日韩视频精品在线| 国产精品日韩欧美一区二区三区 | 亚洲免费视频中文字幕| 国产欧美一区二区三区在线老狼| 久久蜜桃资源一区二区老牛| 永久555www成人免费| 欧美午夜一区二区| 久久在线免费| 亚洲欧美成aⅴ人在线观看| 亚洲国产精品成人一区二区| 国产精品视频1区| 欧美a级在线| 欧美夜福利tv在线| 一区二区免费在线播放| 亚洲国产小视频在线观看| 国产精品美女一区二区| 欧美激情第8页| 老司机午夜精品视频在线观看| 午夜国产精品视频| 日韩午夜一区| 亚洲欧洲日产国产网站| 好吊色欧美一区二区三区四区 | 欧美福利视频在线| 亚洲欧美日韩在线综合| 亚洲精品中文字| 一区二区三区在线看| 国产亚洲激情视频在线| 国产精品免费在线| 欧美色精品天天在线观看视频| 欧美大片一区二区三区| 老司机一区二区| 久久久久久久久久久久久女国产乱| 亚洲欧美日韩国产成人| 一区二区三区不卡视频在线观看| 91久久精品日日躁夜夜躁欧美 | 一区二区三区日韩欧美| 亚洲日本精品国产第一区| 红桃视频欧美| 国产视频丨精品|在线观看| 欧美视频日韩视频在线观看| 欧美激情精品久久久六区热门| 久久久久久久尹人综合网亚洲| 亚洲欧美欧美一区二区三区| 一区二区三区视频在线| 日韩天堂在线视频| 最新中文字幕亚洲| 亚洲高清久久网| 在线观看一区视频| 国内精品一区二区| 国产区二精品视| 国产手机视频一区二区| 国产精一区二区三区| 国产亚洲精久久久久久| 国产亚洲女人久久久久毛片| 国产一区二区三区网站| 精品51国产黑色丝袜高跟鞋| 一区二区在线看| 伊人久久综合| 最新中文字幕一区二区三区| 亚洲精品国产精品乱码不99按摩| 亚洲人永久免费| 一本色道久久精品| 99精品视频一区二区三区| 99国产精品99久久久久久| 亚洲另类视频| 亚洲欧美一区二区激情| 欧美亚洲一区二区在线观看| 亚洲欧美日韩爽爽影院| 久久不见久久见免费视频1| 久久久久久精| 欧美成人国产va精品日本一级| 欧美久久久久久| 欧美丝袜一区二区三区| 国产欧美日韩高清| 国产日韩欧美一区二区三区在线观看 | 国产伪娘ts一区| 在线欧美一区| 一区二区三区欧美在线| 亚洲专区欧美专区| 亚洲欧美国产三级| 久久国产精品亚洲77777| 久久综合电影| 欧美日韩妖精视频| 国产亚洲欧美一区| 日韩午夜在线观看视频| 校园春色国产精品| 麻豆精品国产91久久久久久| 欧美久久视频| 国产日韩欧美在线观看| 亚洲高清av| 国产精品99久久99久久久二8| 久久se精品一区二区| 欧美国产第二页| 国产日韩亚洲欧美| 99在线精品视频在线观看| 欧美影院成年免费版| 欧美日韩成人| 黄色成人av| 亚洲视频在线观看| 免费毛片一区二区三区久久久| 国产精品xxxxx| 亚洲国产三级在线| 欧美在线视频观看免费网站| 欧美连裤袜在线视频|