亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript:Array類型全面解析

 更新時(shí)間:2016年05月19日 09:31:41   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇JavaScript:Array類型全面解析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

JavaScript中的數(shù)組類型與其他語(yǔ)言中的數(shù)組有著很大的區(qū)別。JavaScript中的每一項(xiàng)可以保存任何類型的數(shù)據(jù)。而且,JavaScript數(shù)組的大小是可以動(dòng)態(tài)調(diào)整的,可以隨著數(shù)據(jù)的添加自動(dòng)增長(zhǎng)以容納新增數(shù)據(jù)。

創(chuàng)建數(shù)組的基本形式有兩種。

1.Array構(gòu)造函數(shù)

var cities = new Array();

如果預(yù)先知道要保存的項(xiàng)目數(shù)量,也可以給構(gòu)造函數(shù)傳遞該數(shù)量,該數(shù)量會(huì)自動(dòng)變成length屬性的值。

var cities = new Array(3);

也可以向Array構(gòu)造函數(shù)傳遞數(shù)組中應(yīng)該包含的項(xiàng)。

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

在創(chuàng)建數(shù)組時(shí)可以省略new操作符:

var cities = Array(3); //創(chuàng)建一個(gè)包含3個(gè)元素的數(shù)組

2.數(shù)組字面量表示法

數(shù)組字面量表示法由一對(duì)包含數(shù)組項(xiàng)的方括號(hào)表示,多個(gè)數(shù)組項(xiàng)之間以逗號(hào)隔開(kāi),如下:

var cities = ["shanghai", "beijing", "shenzhen"];
var cities = []; // 創(chuàng)建一個(gè)空字符串

在讀取和設(shè)置數(shù)組的值時(shí),要使用方括號(hào)并提供相應(yīng)值的基于0(基于0就是從0開(kāi)始計(jì)數(shù),第一項(xiàng)為0,第二項(xiàng)為1,以此類推)的數(shù)字索引,如下所示:

var cities = ["shanghai", "beijing", "shenzhen"];
alert(cities[0]);  // "shanghai"
cities[1] = "hongkong"; // 修改第二項(xiàng)"beijing"為"hongkong"
cities[3] = "taiwan"  // 新增一項(xiàng)

數(shù)組的項(xiàng)數(shù)保存在length屬性中,它不是只讀的。因此,可以通過(guò)設(shè)置length屬性,可以從數(shù)組的末尾移除項(xiàng)或者向數(shù)組中添加新項(xiàng)。

var cities = ["shanghai", "beijing", "shenzhen"];
cities.length = 2;
alert(cities[2]);  // undefined

利用length的這一屬性可以在數(shù)組末尾添加新項(xiàng):

var cities = ["shanghai", "beijing", "shenzhen"];
cities[cities.length] = "hongkong";

1. 檢測(cè)數(shù)組

ECMAScript5新增了Array.isArray()方法,作用就是確定某個(gè)值到底是不是數(shù)組,而不管它是哪個(gè)全局執(zhí)行環(huán)境中創(chuàng)建的。用法如下:

if (Array.isArray(value)) {
  // 對(duì)數(shù)組執(zhí)行某些操作
}

2. 轉(zhuǎn)換方法

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

var cities = ["shanghai", "beijing", "shenzhen"];
alert(cities.toString());  // shanghai,beijing,shenzhen
alert(cities.valueOf());  // shanghai,beijing,shenzhen
alert(cities);       // shanghai,beijing,shenzhen

說(shuō)明:由于alert()需要接收字符串參數(shù),它會(huì)在后臺(tái)調(diào)用toString()方法,因此會(huì)得到直接調(diào)用toString()方法相同的結(jié)果。

另外,toLocaleString()方法經(jīng)常也會(huì)返回與toString()和valueOf()相同的值,不同的是,為了取得每一項(xiàng)的值,調(diào)用的是每一項(xiàng)的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());

結(jié)果顯示第一行和第二行調(diào)用的是toString方法,第三行調(diào)用的是toLocaleString方法。

數(shù)組繼承的toLocaleString()、toString()和valueOf()方法,在默認(rèn)情況下,都會(huì)以逗號(hào)分隔字符串的形式返回?cái)?shù)組項(xiàng)。通過(guò)join()方法,則可以使用不同的字符來(lái)分割字符串,然后返回包含所有數(shù)組項(xiàng)的字符串。

var cities = ["shanghai", "beijing", "shenzhen"];
alert(cities);     // shanghai,beijing,shenzhen
alert(cities.join(","));// shanghai,beijing,shenzhen
alert(cities.join("|"));// shanghai|beijing|shenzhen

3. 棧方法

棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),棧中數(shù)據(jù)項(xiàng)的插入和移除只能發(fā)生在棧的頂部。JavaScript數(shù)組提供了push()和pop()方法用于實(shí)現(xiàn)類似于棧的行為。

push()方法

可以接收任意數(shù)量的參數(shù),把它們添加到數(shù)組的末尾,并修改數(shù)組的長(zhǎng)度。

var params = new Array();
var count = params.push("a", "b");
alert(params); // a,b
alert(count);  // 2

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

pop()方法

從數(shù)組的末尾移除最后一項(xiàng),減少數(shù)組的長(zhǎng)度,返回移除的項(xiàng)。

var params = new Array();
var count = params.push("a", "b", "c");
var item = params.pop();
alert(item);  // c
alert(params.length);  // 2

4. 隊(duì)列方法

隊(duì)列的數(shù)據(jù)結(jié)構(gòu)的訪問(wèn)規(guī)則是先進(jìn)先出(FIFO),即從隊(duì)列的末端添加項(xiàng),從隊(duì)列的前端移除項(xiàng)。

shift()方法

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

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

var item = params.shift(); // 取得第一項(xiàng)
alert(item);  // a
alert(params.length);  // 2

unshift()方法

JavaScript 還提供了unshift()方法,能在數(shù)組前端添加任意個(gè)項(xiàng)并返回新數(shù)組的長(zhǎng)度。

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

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

5. 重排序方法

數(shù)組中提供了兩個(gè)直接用來(lái)重排序的方法。

reverse()方法

reverse()方法會(huì)反轉(zhuǎn)數(shù)組項(xiàng)的順序。

var values = [1,2,3,4,5];
values.reverse();
alert(values); // 5,4,3,2,1

sort()方法

在默認(rèn)情況下,sort()方法按升序排列數(shù)組項(xiàng)。為了實(shí)現(xiàn)排序,sort()方法會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的toString()轉(zhuǎn)型方法,然后比較得到的字符串。因此,sort()方法比較的是字符串。

var values = [3,5,53,2,34];
values.sort();
alert(values); // 2,3,34,5,53

然而,我們可以說(shuō)這種排序基本是毫無(wú)意義的,我們需要的是對(duì)數(shù)值進(jìn)行排序。sort()方法可以接收一個(gè)比較函數(shù)作為參數(shù),以便指定排序規(guī)則。

比較函數(shù)接收兩個(gè)參數(shù),如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)參數(shù)之前則返回一個(gè)負(fù)數(shù),如果兩個(gè)參數(shù)相等則返回0,如果第一個(gè)參數(shù)位于第二個(gè)參數(shù)之后則返回一個(gè)正數(shù)。

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()方法

可以基于當(dāng)前數(shù)組中的所有項(xiàng)創(chuàng)建一個(gè)新數(shù)組。這個(gè)方法會(huì)創(chuàng)建一個(gè)當(dāng)前數(shù)組的副本,然后將參數(shù)添加到副本的末尾,然后返回新構(gòu)建的數(shù)組。如果傳遞給concat()方法的是一個(gè)或多個(gè)數(shù)組,則會(huì)將該數(shù)組中的每一項(xiàng)添加到數(shù)組中。

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()方法

基于當(dāng)前數(shù)組中的一或多個(gè)項(xiàng)創(chuàng)建一個(gè)新數(shù)組。slice()方法可以接收一個(gè)或兩個(gè)參數(shù),即要返回項(xiàng)的起始結(jié)束位置。當(dāng)只要一個(gè)參數(shù),返回從起始項(xiàng)到數(shù)組末尾的所有項(xiàng),當(dāng)有兩個(gè)參數(shù)時(shí),返回起始位置和結(jié)束位置之間的項(xiàng)(不包括結(jié)束項(xiàng))。slice()方法不會(huì)影響原數(shù)組。

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()方法主要用于向數(shù)組的中部插入項(xiàng),使用方式有3種:

• 刪除 可以刪除任意數(shù)量的項(xiàng),指定2個(gè)參數(shù):要?jiǎng)h除的第一項(xiàng)和刪除的項(xiàng)數(shù),如:splice(1,3)會(huì)刪除數(shù)組中的第2、3、4項(xiàng)

var cities = ["beijing", "shanghai", "shenzhen", "guangzhou"];
cities.splice(1,3);

alert(cities); // beijing

• 插入 可以向指定位置插入任意數(shù)量的項(xiàng)。指定3個(gè)參數(shù):起始位置、0(要?jiǎng)h除的項(xiàng)數(shù))、要插入的項(xiàng)

var cities = ["beijing", "shanghai", "shenzhen", "guangzhou"];
cities.splice(1,0,"hongkong");
alert(cities); // beijing,hongkong,shanghai,shenzhen,guangzhou

• 替換 可以替換指定位置的項(xiàng)。指定3個(gè)參數(shù):起始位置、要?jiǎng)h除的項(xiàng)、要插入的任意項(xiàng)。

var cities = ["beijing", "shanghai", "shenzhen", "guangzhou"];
cities.splice(1,2,"hongkong");
alert(cities); // beijing,hongkong,guangzhou

7. 位置方法

JavaScript中有兩個(gè)位置方法:indexOf()方法和lastIndexOf()方法。這兩個(gè)方法都接收兩個(gè)參數(shù):要查找的項(xiàng)和(可選)表示查找起點(diǎn)位置的索引。

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

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為數(shù)組提供了5個(gè)迭代方法。每個(gè)方法接收兩個(gè)參數(shù):要在每一項(xiàng)上運(yùn)行的函數(shù)和(可選)運(yùn)行該函數(shù)的作用域?qū)ο蟆绊憈his的值。需要傳入的參數(shù):數(shù)組項(xiàng)的值、該項(xiàng)在數(shù)組中的位置和數(shù)組對(duì)象本身。

•every(): 對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該行數(shù)對(duì)每一項(xiàng)都返回true,則返回true

•filter(): 對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回會(huì)返回true的項(xiàng)組成的數(shù)組

•foreEach(): 對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),沒(méi)有返回值

•map(): 對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的函數(shù)。

•some(): 對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果任一項(xiàng)返回true,則函數(shù)返回true

以上方法都不會(huì)修改數(shù)組中包含的值。

9. 歸并方法

JavaScript中有兩個(gè)歸并數(shù)組的方法:reduce()和reduceRight()。這兩個(gè)方法都會(huì)迭代數(shù)組的所有項(xiàng),然后構(gòu)建一個(gè)最終返回的值。其中,reduce()方法從數(shù)組第一項(xiàng)開(kāi)始,而reduceRight()則從數(shù)組的最后一項(xiàng)開(kāi)始。

它們都可以接收兩個(gè)參數(shù):一個(gè)在每一項(xiàng)上調(diào)用的函數(shù)和(可選)作為歸并基礎(chǔ)的初始值。傳遞給reduce()和reduceRight()的函數(shù)接收4個(gè)參數(shù):前一個(gè)值、當(dāng)前值、項(xiàng)的索引和數(shù)組對(duì)象。這個(gè)函數(shù)返回的任何值都會(huì)作為第一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng)。第一次迭代發(fā)生在數(shù)組的第二項(xiàng)上,因此第一個(gè)參數(shù)是數(shù)組的第一項(xiàng),第二個(gè)參數(shù)就是數(shù)組的第二項(xiàng)。

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
  return prev+cur;
});
alert(sum); // 15

第一次執(zhí)行回調(diào)函數(shù),prev是1,cur是2。第二次,prev是3(1+2),cur是3(數(shù)組第三項(xiàng)的值),知道每一項(xiàng)都訪問(wèn)到。

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

以上這篇JavaScript:Array類型全面解析就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript parseInt()與Number()區(qū)別案例詳解

    JavaScript parseInt()與Number()區(qū)別案例詳解

    這篇文章主要介紹了JavaScript parseInt()與Number()區(qū)別案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • JavaScript刷新頁(yè)面的幾種方法總結(jié)

    JavaScript刷新頁(yè)面的幾種方法總結(jié)

    這篇文章主要介紹了JavaScript刷新頁(yè)面的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • javascript中join方法實(shí)例講解

    javascript中join方法實(shí)例講解

    在本篇內(nèi)容里小編給大家分享了關(guān)于javascript中join方法實(shí)例內(nèi)容,需要的朋友們學(xué)習(xí)參考下。
    2019-02-02
  • javascript操作css屬性

    javascript操作css屬性

    今天因需要用到j(luò)s獲取css屬性,網(wǎng)上搜了半天都不合適的。有一下幾種方法
    2013-12-12
  • JavaScript 基礎(chǔ)問(wèn)答二

    JavaScript 基礎(chǔ)問(wèn)答二

    JavaScript的局限性分析
    2008-12-12
  • ASP.NET中的Razor語(yǔ)法簡(jiǎn)介

    ASP.NET中的Razor語(yǔ)法簡(jiǎn)介

    這篇文章介紹了ASP.NET中的Razor語(yǔ)法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 淺談javascript錯(cuò)誤處理

    淺談javascript錯(cuò)誤處理

    本文主要從前端開(kāi)發(fā)者的角度談一談大多數(shù)前端開(kāi)發(fā)者都會(huì)遇到的js錯(cuò)誤,對(duì)錯(cuò)誤產(chǎn)生的原因、發(fā)生階段,以及如何應(yīng)對(duì)錯(cuò)誤進(jìn)行分析、歸納和總結(jié),希望得到一些有益的結(jié)論用來(lái)指導(dǎo)日常開(kāi)發(fā)工作。
    2019-08-08
  • 一篇文章帶你了解JavaScript的包裝類型

    一篇文章帶你了解JavaScript的包裝類型

    這篇文章主要為大家詳細(xì)介紹了JavaScript的包裝類型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • javascript運(yùn)算符語(yǔ)法全面概述

    javascript運(yùn)算符語(yǔ)法全面概述

    下面小編就為大家?guī)?lái)一篇javascript運(yùn)算符語(yǔ)法全面概述。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07

最新評(píng)論