摘要:數(shù)組不接受參數(shù),從數(shù)組末尾移除最后一項(xiàng)返回?cái)?shù)組最后一項(xiàng)。隊(duì)列方法先進(jìn)先出移除數(shù)組中的第一個(gè)項(xiàng),并返回該項(xiàng)。接收任意個(gè)參數(shù),在數(shù)組前添加任意個(gè)項(xiàng)并返回新數(shù)組的長度。基于當(dāng)前數(shù)組中的一或多個(gè)項(xiàng)創(chuàng)建新數(shù)組,不會(huì)影響原來數(shù)組。
一. 定義方法
有兩種方式可以定義一個(gè)數(shù)組,
構(gòu)造函數(shù)法使用Array構(gòu)造函數(shù)創(chuàng)建數(shù)組,在使用Array構(gòu)造函數(shù)時(shí)可以省略new操作符。
var arr = Array(); var arr = new Array(); // 創(chuàng)建一個(gè)空數(shù)組 var arr = Array(20); var arr = new Array(10); // 創(chuàng)建一個(gè) length 長為 10 的數(shù)組 var arr = Array("1", "2", "3"); var arr = new Array("1", "2", "3"); // 創(chuàng)建一個(gè)包含該三項(xiàng)的數(shù)組對(duì)象字面量表示法
var arr=["1", "2", "3"];
注意:數(shù)組最多能夠包含4294967295個(gè)項(xiàng)
二. 數(shù)組檢測(cè)這篇文章有很詳細(xì)的說明。《在JavaScript中,如何判斷數(shù)組是數(shù)組?》
三. 數(shù)組方法 1.轉(zhuǎn)換方法所有對(duì)象都具有toString()、 toLocaleString()、 valueOf() 方法;要注意它們之間的區(qū)別
var a=[1,2]; console.log(a.toString()); console.log(a.toLocaleString());//1,2 console.log(a.valueOf()); //[1, 2]
valueOf:返回?cái)?shù)組本身
toString():把數(shù)組轉(zhuǎn)換為字符串,并返回結(jié)果,每一項(xiàng)以逗號(hào)分割
toLocalString():結(jié)果與toString()返回的結(jié)果相同,但是調(diào)用的是toLocalString方法。
LocaleString()會(huì)根據(jù)你機(jī)器的本地環(huán)境來返回字符串,而toString()保持著統(tǒng)一的值。
var number = 1337; var date = new Date(); var myArr = [number, date, "foo"]; var str = myArr.toLocaleString(); console.log(str); //1337,2016/8/25 下午3:06:46,foo var number = 1337; var date = new Date(); var myArr = [number, date, "foo"]; var str = myArr.LocaleString()會(huì)根據(jù)你機(jī)器的本地環(huán)境來返回字符串; console.log(str); //1337,Thu Aug 25 2016 15:07:43 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間),foo
使用join()方法,可以設(shè)置分隔符
String.join("|");
備注:需要說明一下alert()方法接收字符串參數(shù),在后臺(tái)調(diào)用toString()方法,但對(duì)于LocaleString()會(huì)調(diào)用LocaleString()方法。
2.棧方法棧(LIFO,后進(jìn)先出)
a.push()接受任意數(shù)量的參數(shù),逐個(gè)推入數(shù)組末尾,并返回修改后數(shù)組的長度。
var a=[1,2]; var b=a.push(3,4); console.log(b); //4 數(shù)組[1,2,3,4]b.pop()
不接受參數(shù),從數(shù)組末尾移除最后一項(xiàng),返回?cái)?shù)組最后一項(xiàng)。
var a=[1,2]; var b=a.pop(); console.log(b); //23.隊(duì)列方法
LIFO(先進(jìn)先出)
a.shift()移除數(shù)組中的第一個(gè)項(xiàng),并返回該項(xiàng)。
var a=[1,2]; var b=a.shift(); console.log(b); //1b.unshift()
unshift() 接收任意個(gè)參數(shù),在數(shù)組前添加任意個(gè)項(xiàng)并返回新數(shù)組的長度。備注:IE7及以下返回undefined。
var a=[1,2]; var b=a.unshift(3,4); console.log(b); //4, 數(shù)組為[3,4,1,2]4.重排序方法 a. sort()
使用時(shí)每個(gè)數(shù)組項(xiàng)調(diào)用自身toString()方法轉(zhuǎn)為字符串,再按字符編碼升序(非數(shù)值大小)排列數(shù)組項(xiàng),因此會(huì)出現(xiàn)一種尷尬的事情:
var a=[1,2,3,10,5]; a.sort(); //[1, 10, 2, 3, 5],字符編碼排序,10排在1后面
這時(shí)我們可以傳入一個(gè)比較函數(shù)。
function compare(a,b){ if(ab){ return 1; }else{ return 0; } } var a=[1,2,3,10,5]; a.sort(compare); //[1, 2, 3, 5, 10]
對(duì)于數(shù)值類型或通過valueOf()方法返回?cái)?shù)值類型的對(duì)象數(shù)組項(xiàng),可以使用下面這個(gè)函數(shù):
function compare(a,b){ return a-b; }b.reverse()
反轉(zhuǎn)數(shù)組。
var a=[1,2,3,10,5]; a.reverse(); //[5, 10, 3, 2, 1]5.操作方法 a.concat()
合并數(shù)組,傳入數(shù)組或者參數(shù),不會(huì)影響原來的數(shù)組。
var a=[1,2,3,4,5]; var a1=[6,7] var b=a.concat(); var c=a.concat(a1); var d=a.concat(a1,8,9); console.log(a);//[1,2,3,4,5] console.log(b);//[1,2,3,4,5] console.log(c);//[1,2,3,4,5,6,7] console.log(d);//[1,2,3,4,5,6,7,8,9]b.slice()
基于當(dāng)前數(shù)組中的一或多個(gè)項(xiàng)創(chuàng)建新數(shù)組,不會(huì)影響原來數(shù)組。
無參數(shù):返回原數(shù)組
一個(gè)參數(shù):返回從該參數(shù)指定位置開始到數(shù)組末尾的所有項(xiàng)
兩個(gè)參數(shù):返回起始和結(jié)束之間的項(xiàng)
var a=[1,2,3,4,5]; var b=a.slice(); var c=a.slice(1); var d=d.slice(1,4); console.log(a);//[1,2,3,4,5] console.log(b);//[1,2,3,4,5] console.log(c);//[2,3,4,5] console.log(d);//[2,3,4]c.splice()
可以刪除、插入、替換;返回刪除的項(xiàng)組成的數(shù)組,對(duì)原數(shù)組造成影響
刪除:指定2個(gè)參數(shù),要?jiǎng)h除的第一項(xiàng)的位置和要?jiǎng)h除的項(xiàng)數(shù)
var a=[1,2,3,4,5]; var b=a.splice(3,2); //a變?yōu)閇1, 2, 3]
插入:提供3個(gè)參數(shù),起始位置、0、要插入的項(xiàng)
var a=[1,2,3,4,5]; var b=a.splice(3,0,2); //a變?yōu)閇1, 2, 3, 2, 4, 5]
替換:指定3個(gè)參數(shù),起始位置、要?jiǎng)h除的項(xiàng)數(shù)、要插入的項(xiàng)數(shù)(可多項(xiàng))
var a=[1,2,3,4,5]; var b=a.splice(3,1,2); //a變?yōu)閇1, 2, 3, 2, 5]6.位置查找
indexOf()和lastIndexOf(),接收兩個(gè)參數(shù):要查找的項(xiàng)和(可選的)表示起點(diǎn)位置的索引,都返回要查找的項(xiàng)在數(shù)組中的位置。
7.迭代方法every():對(duì)數(shù)組的每一項(xiàng)運(yùn)行給定的函數(shù),如果該函數(shù)對(duì)每一項(xiàng)運(yùn)行都返回 true,則返回 true,對(duì)原函數(shù)無影響
some():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),如果該函數(shù)對(duì)任一項(xiàng)返回 true,則返回 true,對(duì)原函數(shù)無影響
filter():對(duì)數(shù)組的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組
forEach():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),無返回值
map():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組
8.縮小方法reduce()和reduceRight()
傳入四個(gè)參數(shù):前一個(gè)值、當(dāng)前值、項(xiàng)的索引、數(shù)組對(duì)象本身。這個(gè)函數(shù)返回的任何值都會(huì)作為第一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng),第一次迭代發(fā)生在數(shù)組的第二項(xiàng)上。
var numbers = [1, 2, 3, 4, 5]; var sum= numbers.reduce(function (pre, cur, index, arr) { return pre + cur; }) alert(sum); // 15四.參考資料
《JavaScript高級(jí)程序設(shè)計(jì)》
《JavaScript權(quán)威指南》
在JavaScript中,如何判斷數(shù)組是數(shù)組?
Object.prototype.toLocaleString()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/80196.html
摘要:個(gè)人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開始萌生寫文章的想法,到著手...
摘要:看下面一個(gè)例子優(yōu)點(diǎn)使用構(gòu)造器函數(shù)的好處在于,它可以在創(chuàng)建對(duì)象時(shí)接收一些參數(shù)。按照慣例,構(gòu)造函數(shù)的函數(shù)名應(yīng)始終以一個(gè)大寫字母開頭,以區(qū)分普通函數(shù)。返回該對(duì)象的源代碼。使您有能力向?qū)ο筇砑訉傩院头椒ā? 基本概念 ECMA關(guān)于對(duì)象的定義是:無序?qū)傩缘募希鋵傩钥梢园局怠?duì)象或者函數(shù)。對(duì)象的每個(gè)屬性或方法都有一個(gè)名字,而每個(gè)名字都映射到一個(gè)值。 類 在現(xiàn)實(shí)生活中,相似的對(duì)象之間往往都有...
摘要:很簡單,不是數(shù)組,但是有屬性,且屬性值為非負(fù)類型即可。至于屬性的值,給出了一個(gè)上限值,其實(shí)是感謝同學(xué)指出,因?yàn)檫@是中能精確表示的最大數(shù)字。如何將函數(shù)的實(shí)際參數(shù)轉(zhuǎn)換成數(shù)組 這篇文章拖了有兩周,今天來跟大家聊聊 JavaScript 中一類特殊的對(duì)象 -> Array-Like Objects。 (本文節(jié)選自 underscore 源碼解讀系列文章,完整版請(qǐng)關(guān)注 https://githu...
摘要:循環(huán)數(shù)組每一項(xiàng)數(shù)組下標(biāo)當(dāng)前調(diào)用數(shù)組本身可選初始值,作為回調(diào)函數(shù)第一個(gè)參數(shù)的默認(rèn)值,也是每次回調(diào)的返回值,見代碼首頁問題轉(zhuǎn)化為數(shù)組首頁問題轉(zhuǎn)化后效果這個(gè)栗子來自配置路由時(shí)遇到的,當(dāng)時(shí)也是優(yōu)化了好幾個(gè)版本。 reduce callback(一個(gè)在數(shù)組中每一項(xiàng)上調(diào)用的函數(shù),接受四個(gè)參數(shù):)previousValue(上一次調(diào)用回調(diào)函數(shù)時(shí)的返回值,或者初始值)currentValue(當(dāng)前正...
閱讀 3415·2023-04-25 22:04
閱讀 2207·2021-11-22 15:29
閱讀 2178·2021-10-11 10:57
閱讀 1420·2021-09-24 09:48
閱讀 3157·2021-09-09 09:34
閱讀 2558·2021-09-02 15:21
閱讀 2406·2019-08-30 15:53
閱讀 1146·2019-08-30 14:07