国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

詳解數(shù)組(Array)引用類(lèi)型

afishhhhh / 3205人閱讀

摘要:例如,會(huì)刪除數(shù)組中的前兩項(xiàng)。插入的項(xiàng)數(shù)不必與刪除的項(xiàng)數(shù)相等。這兩個(gè)方法都接收兩個(gè)參數(shù)要查找的項(xiàng)和可選的表示查找起點(diǎn)位置的索引。對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組。

除Object類(lèi)型外,Array是最常用的類(lèi)型,Array對(duì)象與其他語(yǔ)言相比有著自己的不同之處,首先同一數(shù)組對(duì)象的不同項(xiàng)可以保存不同類(lèi)型的數(shù)據(jù),其次數(shù)組對(duì)象的長(zhǎng)短可以動(dòng)態(tài)改變.

創(chuàng)建方式

創(chuàng)建Array對(duì)象的方式有兩種

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

數(shù)組對(duì)象字面量

//Array構(gòu)造函數(shù)
var colors = new Array();
var colors = new Array(20);
var colors = new Array("red","black","blue");

//數(shù)組對(duì)象字面量
var colors =["red","blue","black"];
var name =[];
var values = [1,2,];

由于IE8及之前版本中的ECMAScript實(shí)現(xiàn)在數(shù)組字面量方面存在bug,上述代碼中values的長(zhǎng)度為3,其他瀏覽器中value的長(zhǎng)度為2.為了兼容,我們應(yīng)避免在最數(shù)組的最后一下中添加,

讀取方式

讀取和設(shè)置數(shù)組的值時(shí),使用方括號(hào)并提供相應(yīng)值的基于0 的數(shù)字索引

var colors = ["red", "blue", "green"]; // 定義一個(gè)字符串?dāng)?shù)組
alert(colors[0]); // 顯示第一項(xiàng)
colors[2] = "black"; // 修改第三項(xiàng)
colors[3] = "brown"; // 新增第四項(xiàng)

數(shù)組對(duì)象有一個(gè)length屬性表示數(shù)組對(duì)象的長(zhǎng)度,通過(guò)修改這個(gè)屬性的值可以改變數(shù)組的長(zhǎng)度

var colors = ["red", "blue", "green"]; // 創(chuàng)建一個(gè)包含3 個(gè)字符串的數(shù)組
var names = []; // 創(chuàng)建一個(gè)空數(shù)組
alert(colors.length); //3
alert(names.length); //0

colors.length = 2;
alert(colors[2]); //undefined
var colors = ["red", "blue", "green"]; // 創(chuàng)建一個(gè)包含3 個(gè)字符串的數(shù)組
colors[colors.length] = "black"; //(在位置3)添加一種顏色
colors[colors.length] = "brown"; //(在位置4)再添加一種顏色

colors[99] = "black"; // (在位置 99)添加一種顏色
alert(colors.length); // 100

tip:數(shù)組最多可以包含4 294 967 295 個(gè)項(xiàng).

數(shù)組操作 數(shù)組檢測(cè)
function isArray(value){
    
    return Object.prototype.toString.call(value) == "[object Array]";

}

ECMAScript 5 新增了Array.isArray()方法,支持 Array.isArray()方法的瀏覽器有IE9+、Firefox 4+、Safari 5+、Opera 10.5+和Chrome。

轉(zhuǎn)換方法

數(shù)組的轉(zhuǎn)換方法有:toString() toLoacalString() valueOf() join()

var colors = ["red", "blue", "green"]; // 創(chuàng)建一個(gè)包含3 個(gè)字符串的數(shù)組
alert(colors.toString()); // red,blue,green
alert(colors.valueOf()); // red,blue,green
alert(colors); // red,blue,green

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

tip:如果不給join()方法傳入任何值,或者給它傳入undefined,則使用逗號(hào)作為分隔符。IE7 及更早版本會(huì)錯(cuò)誤的使用字符串"undefined"作為分隔符

棧方法

棧是一種LIFO(Last-In-First-Out,后進(jìn)先出)的數(shù)據(jù)結(jié)構(gòu),也就是新添加的項(xiàng)最早被移除.

push():向數(shù)組末尾添加項(xiàng).

pop():從數(shù)組末尾移除項(xiàng).

var colors = new Array();
var count = colors.push("red","green"); //推入兩項(xiàng)
alert(count); //2

count = colors.push("black"); //推入一項(xiàng)
alert(count); //3

var item = colors.pop();  //移除一項(xiàng)
alert(item); //black
alert(colors.length); //2
隊(duì)列方法

隊(duì)列是一種FIFO(First-In-First-Out,先進(jìn)先出)的數(shù)據(jù)結(jié)構(gòu),也就是最先添加的項(xiàng)最早被移除

"shift()":從數(shù)組頭部移除項(xiàng).

unshift():向數(shù)組頭部添加項(xiàng).

var colors = ["black","red","blue"];
var item = colors.shift(); //移除第一項(xiàng)并返回
var count = colors.unshift("pink"); //在頭部添加一項(xiàng)并返回?cái)?shù)組長(zhǎng)度 

tip:IE7 及更早版本對(duì)JavaScript 的實(shí)現(xiàn)中存在一個(gè)偏差,其unshift()方法總是返 回undefined 而不是數(shù)組的新長(zhǎng)度

重排序方法

sort(): 在默認(rèn)情況下,sort()方法按升序排列數(shù)組項(xiàng)——即最小的值位于最前面,最大的值排在最后面。為了實(shí)現(xiàn)排序,sort()方法會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的toString()轉(zhuǎn)型方法,然后比較得到的字符串,以確定如何排序。即使數(shù)組中的每一項(xiàng)都是數(shù)值,sort()`方法比較的也是字符串

reverse(): 反轉(zhuǎn)數(shù)組項(xiàng)的順序.

var arr = [1,48,230,12];
arr.sort(); // [1, 12, 230, 48]

sort()方法可以接收一個(gè)比較函數(shù)作為參數(shù),以便我們指定哪個(gè)值位于哪個(gè)值的前面。比較函數(shù)接收兩個(gè)參數(shù),如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)之前則返回一個(gè)負(fù)數(shù),如果兩個(gè)參數(shù)相等則返回0,如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)之后則返回一個(gè)正數(shù)

function compare(value1,value2){
    
    if(value1 > value2){
        return 1;
    }
    else if(value1 < value2)
    {
        return -1;
    }
    else {
        return 0;
    }

}

var arr = [1,48,230,12];
arr.sort(); // [1, 12, 48, 230]

對(duì)于數(shù)值類(lèi)型或者其 valueOf()方法會(huì)返回?cái)?shù)值類(lèi)型的對(duì)象類(lèi)型,可以使用一個(gè)更簡(jiǎn)單的比較函數(shù)。這個(gè)函數(shù)只要用第二個(gè)值減第一個(gè)值即可

function compare(value1, value2){
    return value2 - value1;
}
操作方法

concat(): 數(shù)組拼接,并返回拼接后的結(jié)果.

slice() : slice()方法可以接受一或兩個(gè)參數(shù),即要返回項(xiàng)的起始和結(jié)束位置。在只有一個(gè)參數(shù)的情況下,slice()
方法返回從該參數(shù)指定位置開(kāi)始到當(dāng)前數(shù)組末尾的所有項(xiàng)。如果有兩個(gè)參數(shù),該方法返回起始和結(jié)束位置之間的項(xiàng)——但不包括結(jié)束位置的項(xiàng)

splice():此方法有三個(gè)用途.

刪除:可以刪除任意數(shù)量的項(xiàng),只需指定2 個(gè)參數(shù):要?jiǎng)h除的第一項(xiàng)的位置和要?jiǎng)h除的項(xiàng)數(shù)。例如,splice(0,2)會(huì)刪除數(shù)組中的前兩項(xiàng)。

插入:可以向指定位置插入任意數(shù)量的項(xiàng),只需提供3 個(gè)參數(shù):起始位置、0(要?jiǎng)h除的項(xiàng)數(shù))和要插入的項(xiàng)。如果要插入多個(gè)項(xiàng),可以再傳入第四、第五,以至任意多個(gè)項(xiàng)。例如,splice(2,0,"red","green")會(huì)從當(dāng)前數(shù)組的位置2 開(kāi)始插入字符串"red"和"green"。

替換:可以向指定位置插入任意數(shù)量的項(xiàng),且同時(shí)刪除任意數(shù)量的項(xiàng),只需指定3 個(gè)參數(shù):起始位置、要?jiǎng)h除的項(xiàng)數(shù)和要插入的任意數(shù)量的項(xiàng)。插入的項(xiàng)數(shù)不必與刪除的項(xiàng)數(shù)相等。例如,splice (2,1,"red","green")會(huì)刪除當(dāng)前數(shù)組位置2 的項(xiàng),然后再?gòu)奈恢? 開(kāi)始插入字符串"red"和"green"

tip:如果 slice()方法的參數(shù)中有一個(gè)負(fù)數(shù),則用數(shù)組長(zhǎng)度加上該數(shù)來(lái)確定相應(yīng)的位置。

//concat()
var arr = ["red","black","blue"];
var result =  arr.concat(); // ["red","black","blue"]
var result1 = arr.concat(["yellow","pink"]); // ["red","black","blue","yellow","pink"]
var result2 - arr.concat("white",["yellow","pink"]); // ["red","black","blue","white","yellow","pink"]
//slice()
var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
alert(colors2); //green,blue,yellow,purple
alert(colors3); //green,blue,yellow
//splice()
var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1); // 刪除第一項(xiàng)
console.log(colors); // ["green","blue"]
console.log(removed); // ["red"] 返回的數(shù)組中只包含一項(xiàng)

removed = colors.splice(1, 0, "yellow", "orange"); // 從位置1 開(kāi)始插入兩項(xiàng)
console.log(colors); // [`green`,`yellow`,`orange`,`blue`]
console.log(removed); // 返回的是一個(gè)空數(shù)組

removed = colors.splice(1, 1, "red", "purple"); // 插入兩項(xiàng),刪除一項(xiàng)
console.log(colors); // [`green`,`red`,`purple`,`orange`,`blue`]
console.log(removed); // ["yellow"] 返回的數(shù)組中只包含一項(xiàng)
位置方法

ECMAScript 5 為數(shù)組實(shí)例添加了兩個(gè)位置方法:indexOf()lastIndexOf()。這兩個(gè)方法都接收兩個(gè)參數(shù):要查找的項(xiàng)和(可選的)表示查找起點(diǎn)位置的索引。其中,indexOf()方法從數(shù)組的開(kāi)頭(位0)開(kāi)始向后查找,lastIndexOf()方法則從數(shù)組的末尾開(kāi)始向前查找.這兩個(gè)方法都返回要查找的項(xiàng)在數(shù)組中的位置,或者在沒(méi)找到的情況下返回-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

var person = { name: "Nicholas" };
var people = [{ name: "Nicholas" }];
var morePeople = [person];
alert(people.indexOf(person)); //-1
alert(morePeople.indexOf(person)); //0

支持它們的瀏覽器包括IE9+、Firefox 2+、Safari 3+、Opera 9.5+和Chrome。

迭代方法

ECMAScript 5 為數(shù)組定義了5 個(gè)迭代方法。每個(gè)方法都接收兩個(gè)參數(shù):要在每一項(xiàng)上運(yùn)行的函數(shù)和(可選的)運(yùn)行該函數(shù)的作用域?qū)ο蟆绊?b>this的值。傳入這些方法中的函數(shù)會(huì)接收三個(gè)參數(shù):數(shù)組項(xiàng)的值、該項(xiàng)在數(shù)組中的位置和數(shù)組對(duì)象本身。根據(jù)使用的方法不同,這個(gè)函數(shù)執(zhí)行后的返回值可能會(huì)也可能不會(huì)影響方法的返回值。以下是這5 個(gè)迭代方法的作用。

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

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

forEach():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù)。這個(gè)方法沒(méi)有返回值。

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

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

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


var someResult = numbers.some(function(item, index, array){
return (item > 2);
});
alert(someResult); //true

這幾個(gè)方法都類(lèi)似,只是返回值不一樣,支持這些迭代方法的瀏覽器有IE9+、Firefox 2+、Safari 3+、Opera 9.5+和Chrome。

歸并方法

ECMAScript 5 還新增了兩個(gè)歸并數(shù)組的方法:reduce()reduceRight()。這兩個(gè)方法都會(huì)迭代數(shù)組的所有項(xiàng),然后構(gòu)建一個(gè)最終返回的值。其中,reduce()方法從數(shù)組的第一項(xiàng)開(kāi)始,逐個(gè)遍歷到最后。而reduceRight()則從數(shù)組的最后一項(xiàng)開(kāi)始,向前遍歷到第一項(xiàng).

這兩個(gè)方法都接收兩個(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;
});
console.log(sum); //15

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

支持這兩個(gè)歸并函數(shù)的瀏覽器有IE9+、Firefox 3+、Safari 4+、Opera 10.5 和Chrome。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/86223.html

相關(guān)文章

  • JS判斷數(shù)組的六種方法詳解

    摘要:對(duì)象構(gòu)造函數(shù)的判斷用法的每個(gè)實(shí)例都有構(gòu)造函數(shù),用于保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)如上所示,的實(shí)例的跟對(duì)象是相等的那么我們就可以用此來(lái)判斷數(shù)組了原型鏈上的用法屬性表示構(gòu)造函數(shù)的原型其中有一個(gè)方法是用于測(cè)試一個(gè)對(duì)象是否存在于另一個(gè)對(duì)象的原型鏈上。 在JS中,數(shù)組是屬于Object類(lèi)型的,也就是屬于引用類(lèi)型(引用類(lèi)型存放在堆內(nèi)存中,在棧內(nèi)存會(huì)有一個(gè)或者多個(gè)地址來(lái)指向這個(gè)堆內(nèi)存)。 所以對(duì)于引用...

    xiaoxiaozi 評(píng)論0 收藏0
  • javaScript引用類(lèi)型詳解

    摘要:構(gòu)造函數(shù)用于創(chuàng)建對(duì)象的函數(shù)。例為構(gòu)造函數(shù),為新對(duì)象提供默認(rèn)屬性與方法。方法一可以省略方法二數(shù)組字面量與對(duì)象一樣,字面量不會(huì)調(diào)用構(gòu)造函數(shù)。類(lèi)型基本類(lèi)型引用類(lèi)型建議永不要使用對(duì)象類(lèi)型方法按照指定方法返回?cái)?shù)值的字符串表示。 概念 : 引用類(lèi)型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)據(jù)和功能組織在一起,也就是 類(lèi);對(duì)象為特殊的引用類(lèi)型實(shí)例。新對(duì)象由new后加一個(gè)構(gòu)造函數(shù)創(chuàng)建的。構(gòu)造函數(shù):用于創(chuàng)建對(duì)象的函數(shù)。例...

    Nekron 評(píng)論0 收藏0
  • js 中的 call / apply 方法詳解引用類(lèi)型的繼承

    摘要:也就是說(shuō)當(dāng)使用后,當(dāng)前執(zhí)行上下文中的對(duì)象已被替換為,后續(xù)執(zhí)行將以所持有的狀態(tài)屬性繼續(xù)執(zhí)行。借用的方法替換的實(shí)例去調(diào)用相應(yīng)的方法。實(shí)現(xiàn)引用類(lèi)型的繼承其實(shí)沒(méi)有類(lèi)這一概念,我們平時(shí)使用的等嚴(yán)格來(lái)說(shuō)被稱(chēng)作引用類(lèi)型。 call 方法:object.method.call(targetObj[, argv1, argv2, .....]) apply 方法:object.method.apply(...

    cod7ce 評(píng)論0 收藏0
  • JavaScript學(xué)習(xí)總結(jié)(五)原型和原型鏈詳解

    摘要:原型對(duì)象內(nèi)部也有一個(gè)指針屬性指向構(gòu)造函數(shù)實(shí)例可以訪(fǎng)問(wèn)原型對(duì)象上定義的屬性和方法。在創(chuàng)建子類(lèi)型的實(shí)例時(shí),不能向超類(lèi)型的構(gòu)造函數(shù)中傳遞參數(shù)。 贊助我以寫(xiě)出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 私有變量和函數(shù) 在函數(shù)內(nèi)部定義的變量和函數(shù),如果不對(duì)外提供接口,外部是無(wú)法訪(fǎng)問(wèn)到的,也就是該函數(shù)的私有的變量和函數(shù)。 function ...

    EscapedDog 評(píng)論0 收藏0
  • 詳解js面向?qū)ο缶幊?/b>

    摘要:看下面一個(gè)例子優(yōu)點(diǎn)使用構(gòu)造器函數(shù)的好處在于,它可以在創(chuàng)建對(duì)象時(shí)接收一些參數(shù)。按照慣例,構(gòu)造函數(shù)的函數(shù)名應(yīng)始終以一個(gè)大寫(xiě)字母開(kāi)頭,以區(qū)分普通函數(shù)。返回該對(duì)象的源代碼。使您有能力向?qū)ο筇砑訉傩院头椒ā? 基本概念 ECMA關(guān)于對(duì)象的定義是:無(wú)序?qū)傩缘募希鋵傩钥梢园局怠?duì)象或者函數(shù)。對(duì)象的每個(gè)屬性或方法都有一個(gè)名字,而每個(gè)名字都映射到一個(gè)值。 類(lèi) 在現(xiàn)實(shí)生活中,相似的對(duì)象之間往往都有...

    lolomaco 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<