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

JavaScript:Array類型全面解析
來源:易賢網 閱讀:1101 次 日期:2016-06-27 11:48:40
溫馨提示:易賢網小編為您整理了“JavaScript:Array類型全面解析”,方便廣大網友查閱!

下面小編就為大家帶來一篇JavaScript:Array類型全面解析。小編覺得挺不錯的,現在分享給大家,也給大家做個參考。

JavaScript中的數組類型與其他語言中的數組有著很大的區別。JavaScript中的每一項可以保存任何類型的數據。而且,JavaScript數組的大小是可以動態調整的,可以隨著數據的添加自動增長以容納新增數據。

創建數組的基本形式有兩種。

1.Array構造函數

var cities = new Array();

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

var cities = new Array(3);

也可以向Array構造函數傳遞數組中應該包含的項。

var cities = new Array("shanghai", "beijing", "shenzhen");

在創建數組時可以省略new操作符:

var cities = Array(3); //創建一個包含3個元素的數組

2.數組字面量表示法

數組字面量表示法由一對包含數組項的方括號表示,多個數組項之間以逗號隔開,如下:

var cities = ["shanghai", "beijing", "shenzhen"];

var cities = []; // 創建一個空字符串

在讀取和設置數組的值時,要使用方括號并提供相應值的基于0(基于0就是從0開始計數,第一項為0,第二項為1,以此類推)的數字索引,如下所示:

var cities = ["shanghai", "beijing", "shenzhen"];

alert(cities[0]); // "shanghai"

cities[1] = "hongkong"; // 修改第二項"beijing"為"hongkong"

cities[3] = "taiwan" // 新增一項

數組的項數保存在length屬性中,它不是只讀的。因此,可以通過設置length屬性,可以從數組的末尾移除項或者向數組中添加新項。

var cities = ["shanghai", "beijing", "shenzhen"];

cities.length = 2;

alert(cities[2]); // undefined

利用length的這一屬性可以在數組末尾添加新項:

var cities = ["shanghai", "beijing", "shenzhen"];

cities[cities.length] = "hongkong";

1. 檢測數組

ECMAScript5新增了Array.isArray()方法,作用就是確定某個值到底是不是數組,而不管它是哪個全局執行環境中創建的。用法如下:

if (Array.isArray(value)) {

// 對數組執行某些操作

}

2. 轉換方法

所有對象都具有toLocaleString()、toString()和valueOf()方法。其中調用數組的toString()方法會返回由數組中的每個值的字符串形式拼接而成的一個以逗號分隔的字符串。例如:

var cities = ["shanghai", "beijing", "shenzhen"];

alert(cities.toString()); // shanghai,beijing,shenzhen

alert(cities.valueOf()); // shanghai,beijing,shenzhen

alert(cities); // shanghai,beijing,shenzhen

說明:由于alert()需要接收字符串參數,它會在后臺調用toString()方法,因此會得到直接調用toString()方法相同的結果。

另外,toLocaleString()方法經常也會返回與toString()和valueOf()相同的值,不同的是,為了取得每一項的值,調用的是每一項的toLocaleString()方法,而不是toString()方法。例如:

var p1 = {

toLocaleString: function () {

return "p1 toLocaleString";

},

toString: function () {

return "p1 toString";

}

};

var p2 = {

toLocaleString: function () {

return "p2 toLocaleString";

},

toString: function () {

return "p2 toString";

}

};

var p = [p1, p2];

alert(p);

alert(p.toString());

alert(p.toLocaleString());

結果顯示第一行和第二行調用的是toString方法,第三行調用的是toLocaleString方法。

數組繼承的toLocaleString()、toString()和valueOf()方法,在默認情況下,都會以逗號分隔字符串的形式返回數組項。通過join()方法,則可以使用不同的字符來分割字符串,然后返回包含所有數組項的字符串。

var cities = ["shanghai", "beijing", "shenzhen"];

alert(cities); // shanghai,beijing,shenzhen

alert(cities.join(","));// shanghai,beijing,shenzhen

alert(cities.join("|"));// shanghai|beijing|shenzhen

3. 棧方法

棧是一種后進先出(LIFO)的數據結構,棧中數據項的插入和移除只能發生在棧的頂部。JavaScript數組提供了push()和pop()方法用于實現類似于棧的行為。

push()方法

可以接收任意數量的參數,把它們添加到數組的末尾,并修改數組的長度。

var params = new Array();

var count = params.push("a", "b");

alert(params); // a,b

alert(count); // 2

從上面的例子可以看出,push()方法返回的插入的項數。

pop()方法

從數組的末尾移除最后一項,減少數組的長度,返回移除的項。

var params = new Array();

var count = params.push("a", "b", "c");

var item = params.pop();

alert(item); // c

alert(params.length); // 2

4. 隊列方法

隊列的數據結構的訪問規則是先進先出(FIFO),即從隊列的末端添加項,從隊列的前端移除項。

shift()方法

JavaScript中提供了shift()方法,移除數組中的第一項并返回該項,同時修改數組的length屬性。

var params = new Array();

var count = params.push("a", "b", "c");

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

alert(item); // a

alert(params.length); // 2

unshift()方法

JavaScript 還提供了unshift()方法,能在數組前端添加任意個項并返回新數組的長度。

var params = new Array();

var count1 = params.unshift("a");

alert(count1); // 1

alert(params); // a

var count2 = params.unshift("b");

alert(count2); // 2

alert(params); // b,a

var count3 = params.unshift("c", "d");

alert(params); // c,d,b,a

觀察發現,如果一次unshift()中有多項,它會將這些項按照順序插入到數組中,即第一個參數插入最前面。像上面的例子中那樣,第一次插入“a”,第二次在數組的最前面插入“b”,第三次時有多項,但是順序是c在前,d在后。

5. 重排序方法

數組中提供了兩個直接用來重排序的方法。

reverse()方法

reverse()方法會反轉數組項的順序。

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

values.reverse();

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

sort()方法

在默認情況下,sort()方法按升序排列數組項。為了實現排序,sort()方法會調用每個數組項的toString()轉型方法,然后比較得到的字符串。因此,sort()方法比較的是字符串。

var values = [3,5,53,2,34];

values.sort();

alert(values); // 2,3,34,5,53

然而,我們可以說這種排序基本是毫無意義的,我們需要的是對數值進行排序。sort()方法可以接收一個比較函數作為參數,以便指定排序規則。

比較函數接收兩個參數,如果第一個參數應該位于第二個參數之前則返回一個負數,如果兩個參數相等則返回0,如果第一個參數位于第二個參數之后則返回一個正數。

function compare(value1, value2) {

if (value1 < value2) {

return -1;

} else if (value1 > value2) {

return 1;

} else {

return 0;

}

}

var values = [3,5,53,2,34];

values.sort(compare);

alert(values); // 2,3,4,34,53

6. 操作方法

concat()方法

可以基于當前數組中的所有項創建一個新數組。這個方法會創建一個當前數組的副本,然后將參數添加到副本的末尾,然后返回新構建的數組。如果傳遞給concat()方法的是一個或多個數組,則會將該數組中的每一項添加到數組中。

var arrays = ["a", "b", "c"];

var arrays2 = arrays.concat("d", ["e", "fe"]);

alert(arrays); // a,b,c

alert(arrays2); // a,b,c,d,e,f

slice()方法

基于當前數組中的一或多個項創建一個新數組。slice()方法可以接收一個或兩個參數,即要返回項的起始和結束位置。當只要一個參數,返回從起始項到數組末尾的所有項,當有兩個參數時,返回起始位置和結束位置之間的項(不包括結束項)。slice()方法不會影響原數組。

var cities = ["beijing", "shanghai", "shenzhen", "guangzhou"];

var cities2 = cities.slice(1);

var cities3 = cities.slice(1,3);

alert(cities2); // shanghai,shenzhen,guangzhou

alert(cities3); // shanghai,shenzhen

splice()方法

splice()方法主要用于向數組的中部插入項,使用方式有3種:

• 刪除 可以刪除任意數量的項,指定2個參數:要刪除的第一項和刪除的項數,如:splice(1,3)會刪除數組中的第2、3、4項

var cities = ["beijing", "shanghai", "shenzhen", "guangzhou"];

cities.splice(1,3);

alert(cities); // beijing

• 插入 可以向指定位置插入任意數量的項。指定3個參數:起始位置、0(要刪除的項數)、要插入的項

var cities = ["beijing", "shanghai", "shenzhen", "guangzhou"];

cities.splice(1,0,"hongkong");

alert(cities); // beijing,hongkong,shanghai,shenzhen,guangzhou

• 替換 可以替換指定位置的項。指定3個參數:起始位置、要刪除的項、要插入的任意項。

var cities = ["beijing", "shanghai", "shenzhen", "guangzhou"];

cities.splice(1,2,"hongkong");

alert(cities); // beijing,hongkong,guangzhou

7. 位置方法

JavaScript中有兩個位置方法:indexOf()方法和lastIndexOf()方法。這兩個方法都接收兩個參數:要查找的項和(可選)表示查找起點位置的索引。

indexOf()方法表示從數組的開頭向后查找,lastIndexOf()則從數組的末尾開始向前查找。它們都返回查找的項在數組中的位置,如果沒有找到則返回-1。在第一個參數與數組中的每一項比較時使用的是全等。

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

alert(nums.indexOf(3)); // 2

alert(nums.lastIndexOf(5)); // 4

alert(nums.indexOf(3,1)); // 2

alert(nums.lastIndexOf(4,4)); // 3

8. 迭代方法

JavaScript為數組提供了5個迭代方法。每個方法接收兩個參數:要在每一項上運行的函數和(可選)運行該函數的作用域對象——影響this的值。需要傳入的參數:數組項的值、該項在數組中的位置和數組對象本身。

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

•filter(): 對數組中的每一項運行給定函數,返回會返回true的項組成的數組

•foreEach(): 對數組中的每一項運行給定函數,沒有返回值

•map(): 對數組中的每一項運行給定函數,返回每次函數調用的結果組成的函數。

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

以上方法都不會修改數組中包含的值。

9. 歸并方法

JavaScript中有兩個歸并數組的方法:reduce()和reduceRight()。這兩個方法都會迭代數組的所有項,然后構建一個最終返回的值。其中,reduce()方法從數組第一項開始,而reduceRight()則從數組的最后一項開始。

它們都可以接收兩個參數:一個在每一項上調用的函數和(可選)作為歸并基礎的初始值。傳遞給reduce()和reduceRight()的函數接收4個參數:前一個值、當前值、項的索引和數組對象。這個函數返回的任何值都會作為第一個參數自動傳給下一項。第一次迭代發生在數組的第二項上,因此第一個參數是數組的第一項,第二個參數就是數組的第二項。

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

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

return prev+cur;

});

alert(sum); // 15

第一次執行回調函數,prev是1,cur是2。第二次,prev是3(1+2),cur是3(數組第三項的值),知道每一項都訪問到。

reduceRight()的作用類似,只不過方向相反而已。

以上這篇JavaScript:Array類型全面解析就是小編分享給大家的全部內容了,希望能給大家一個參考

更多信息請查看網絡編程
易賢網手機網站地址:JavaScript:Array類型全面解析
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

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

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲二区三区四区| 久久久青草婷婷精品综合日韩| 欧美一区二区三区视频在线| 在线观看91久久久久久| 国产精品久久久久久久久久免费| 欧美激情精品久久久久久变态 | 国产精品视频99| 欧美日韩在线亚洲一区蜜芽| 欧美黑人一区二区三区| 欧美成人a视频| 欧美激情在线观看| 欧美精品日韩一区| 欧美激情精品久久久久久变态| 欧美精品观看| 欧美天堂亚洲电影院在线观看| 国产精品v欧美精品v日韩| 国产精品视频xxxx| 国产一区视频在线看| 一区二区在线免费观看| 亚洲黄色在线看| 最近看过的日韩成人| 国产亚洲精品自拍| 国产日韩精品综合网站| 国内精品嫩模av私拍在线观看| 韩日欧美一区二区| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲欧洲三级| 99视频日韩| 午夜宅男久久久| 久久亚洲午夜电影| 欧美好吊妞视频| 国产精品亚洲不卡a| 国内精品福利| 亚洲老司机av| 欧美一区二区播放| 欧美www视频| 国产精品视频自拍| 在线观看亚洲专区| 一本色道久久综合亚洲91| 欧美一区国产二区| 欧美黑人在线播放| 国产免费观看久久| 国产欧美三级| 亚洲国产一区二区三区在线播 | 国产婷婷一区二区| 亚洲精品国产精品久久清纯直播| 亚洲午夜激情网页| 久久综合精品一区| 国产精品久久国产精麻豆99网站| 狠狠噜噜久久| 亚洲香蕉视频| 欧美电影电视剧在线观看| 国产精品夜夜夜| 亚洲乱码视频| 久久综合狠狠| 国产精品一区二区男女羞羞无遮挡| 亚洲国产第一页| 亚洲欧洲av一区二区| 欧美国产欧美综合| 国产一区欧美| 亚洲在线视频网站| 欧美日本亚洲视频| 在线国产欧美| 欧美一激情一区二区三区| 欧美日韩一区不卡| 亚洲国产经典视频| 久久久青草婷婷精品综合日韩 | 亚洲国产精品一区二区第四页av| 亚洲在线中文字幕| 欧美亚洲综合另类| 欧美人妖在线观看| 国产自产v一区二区三区c| 一本色道婷婷久久欧美| 久久久综合网站| 国产老肥熟一区二区三区| 99视频在线观看一区三区| 久久艳片www.17c.com| 国产伦精品一区二区三| 国产精品99久久99久久久二8| 欧美国产精品日韩| 亚洲第一区色| 久久深夜福利免费观看| 国产一级精品aaaaa看| 亚洲欧美在线高清| 国产精品久久综合| 亚洲专区在线视频| 欧美视频不卡中文| 中文在线资源观看网站视频免费不卡| 欧美极品影院| 99精品国产高清一区二区| 欧美成人免费播放| 亚洲精品久久久久中文字幕欢迎你| 猛男gaygay欧美视频| 在线精品在线| 欧美成人一区二区三区| 亚洲精品一区二区三区福利| 欧美精品在线极品| 亚洲深夜av| 国产女人精品视频| 久久视频国产精品免费视频在线 | 欧美1区视频| 亚洲经典自拍| 欧美日韩在线免费| 销魂美女一区二区三区视频在线| 国产精品影音先锋| 久久久www成人免费无遮挡大片| 国产一区二区三区直播精品电影 | 国产欧美日韩综合| 久久久久久久久蜜桃| 在线观看亚洲| 欧美三区在线观看| 欧美一区影院| 亚洲国产成人av| 欧美日韩一区二区三区在线视频 | 欧美特黄一级| 国产日韩一区二区三区| 欧美专区在线观看一区| 在线观看国产成人av片| 欧美精品aa| 午夜精品亚洲| 亚洲激情国产| 国产精品免费福利| 另类成人小视频在线| 一区二区三区欧美激情| 国产色综合久久| 欧美另类一区| 久久视频免费观看| 亚洲一区日韩在线| 亚洲国产一区二区三区a毛片| 国产精品毛片大码女人| 欧美成人dvd在线视频| 亚洲欧美精品suv| 91久久久久久| 国产日韩欧美麻豆| 欧美裸体一区二区三区| 久久九九久精品国产免费直播| 日韩视频一区二区在线观看| 国产欧美一区在线| 欧美视频一区二区| 美日韩精品视频| 久久国产精品久久久久久电车 | 亚洲图片你懂的| 在线观看日韩国产| 国产欧美va欧美va香蕉在| 欧美国产激情二区三区| 久久久久久久久蜜桃| 亚洲午夜在线视频| 亚洲另类视频| 在线日本欧美| 国产一区二区三区精品久久久| 欧美视频在线一区二区三区| 欧美91大片| 久久久伊人欧美| 欧美一级淫片aaaaaaa视频| 一本到12不卡视频在线dvd| 亚洲国产欧美一区二区三区久久| 国产亚洲激情| 国产欧美一区二区视频| 国产精品久久久久久久久久免费 | 母乳一区在线观看| 欧美在线一二三| 亚洲综合国产激情另类一区| 亚洲精品国产精品国自产在线 | 黄色国产精品| 国产精品尤物福利片在线观看| 欧美日韩一级视频| 欧美另类变人与禽xxxxx| 欧美福利在线观看| 蜜桃精品一区二区三区 | 日韩视频永久免费观看| 国产日韩视频| 国产精品一区久久久| 国产精品激情偷乱一区二区∴| 欧美精品一区二区三区蜜臀| 欧美大香线蕉线伊人久久国产精品| 久久婷婷久久一区二区三区| 久久免费少妇高潮久久精品99| 久久久久一区| 久久综合网络一区二区| 久久视频在线看| 免费在线视频一区| 欧美高清视频在线| 欧美剧在线观看| 欧美视频在线观看免费网址| 国产精品红桃| 国产丝袜一区二区三区| 国产专区一区| 亚洲欧洲偷拍精品| 99国产精品私拍| 亚洲欧美日韩国产综合在线| 欧美在线啊v| 美国三级日本三级久久99| 欧美国产91| 国产精品久久久一区麻豆最新章节| 国产精品入口尤物| 激情成人av在线| 亚洲免费精彩视频| 午夜久久一区| 欧美成人精品一区| 国产精品成人免费视频|