摘要:第二種方式稱為數(shù)組字面量表示法。是對(duì)數(shù)組進(jìn)行排序。方法方法可以說(shuō)是數(shù)組中功能最強(qiáng)大的方法,集多項(xiàng)功能于一身。的返回值為刪除的元素組成的數(shù)組。不改變數(shù)組的方法轉(zhuǎn)換方法方法主要是用來(lái)將數(shù)組的元素通過(guò)規(guī)定的方式連接成字符串。
作為最常用的類型,JavaScript中的數(shù)組還是和其他語(yǔ)言中有很大的區(qū)別的。
主要體現(xiàn)在兩點(diǎn):
數(shù)組中的每一項(xiàng)都可以保存任何類型的數(shù)據(jù)
數(shù)組的大小可以動(dòng)態(tài)調(diào)整
首先來(lái)介紹創(chuàng)建數(shù)組的兩種方法
1.第一種方式
var arr1 = new Array(); var arr2 = new Array(3); var arr3 = new Array("jerry");
可以看到這種方式建立數(shù)組,arr1是一個(gè)空數(shù)組,arr2是一個(gè)長(zhǎng)度為3的數(shù)組,arr3是一個(gè)包含‘jerry’一個(gè)元素的數(shù)組。同時(shí)通過(guò)這種方式創(chuàng)建的數(shù)組,new操作符可以省略。
2.第二種方式稱為數(shù)組字面量表示法。
var a = []; var arr = ["tom","jack"]
數(shù)組的長(zhǎng)度是可動(dòng)態(tài)調(diào)整,導(dǎo)致我們直接就可以設(shè)置它的長(zhǎng)度
var a = [123,423]; a.length = 10; a[9]="123"; console.log(a[8])//undefined a[10] = "123" console.log(a.length)//10
從上面的代碼中我們可以看出:
如果我們?cè)O(shè)置的長(zhǎng)度大于原來(lái)的數(shù)組的長(zhǎng)度的時(shí)候, 數(shù)組后面的元素自動(dòng)設(shè)置為undefined。
如果我們對(duì)大于當(dāng)前數(shù)組長(zhǎng)度的位置賦值的時(shí)候,那么就會(huì)導(dǎo)致數(shù)組的長(zhǎng)度自動(dòng)變?yōu)槟闼x值位置+1.
我們可以把數(shù)組的方法分為三類
改變數(shù)組的方法 棧方法pop和push很簡(jiǎn)單,也很容易理解。pop就是從數(shù)組的末尾刪除一個(gè)元素并返回。push是在數(shù)組的末尾添加一個(gè)元素。
var arr = [1,3,4]; arr.pop(); console.log(arr);//[1,3] arr.push(5); console.log(arr);//[1,3,5]隊(duì)列方法
shift和unshift是和棧方法是相對(duì)的,它倆是從數(shù)組的頭部進(jìn)行操作。shift是從頭部刪除一個(gè)元素,unshift是從同步加入一個(gè)元素。
var arr = [1,3,4]; arr.shift(); console.log(arr);//[3,4] arr.unshift(5); console.log(arr);//[5,3,4]重排序方法
reverse是對(duì)數(shù)組進(jìn)行翻轉(zhuǎn)。
var arr = [1,3,4]; arr.reverse(); console.log(arr);//[4,3,1]
sort是對(duì)數(shù)組進(jìn)行排序。
var arr = [1,3,5,4]; arr.sort(); console.log(arr);//[1,3,4,5];
sort默認(rèn)的對(duì)數(shù)組進(jìn)行升序排序。sort可以接收一個(gè)自定義的比較函數(shù),自定義排序規(guī)則。
sort方法會(huì)調(diào)用每個(gè)元素的toString()方法,從而通過(guò)字符串進(jìn)行比較大小。即使是數(shù)值,依然要變換成字符串,從而就會(huì)帶來(lái)一些問(wèn)題。比如
var arr = [1,3,15,4]; arr.sort() console.log(arr);//[1,15,3,4];
轉(zhuǎn)換為字符串之后,‘15’是排在‘3’,‘4’的前面的。這就帶來(lái)了問(wèn)題,所以在進(jìn)行數(shù)值數(shù)組的排序,必須進(jìn)行自定義排序規(guī)則。
var arr = [1,3,15,4]; function compare(v1,v2){ if(v1 > v2) return 1; if(v1 < v2) return -1; return 0; } arr.sort(compare) console.log(arr);//[1,3,4,15]splice方法
splice方法可以說(shuō)是數(shù)組中功能最強(qiáng)大的方法,集多項(xiàng)功能于一身。主要的用途就是用來(lái)向數(shù)組的中部插入元素。
splice方法主要有三種用法。
splice的返回值為刪除的元素組成的數(shù)組。如果刪除的元素為空,返回空數(shù)組。
刪除元素
splice(index,count),index表示刪除的位置,count表示刪除的項(xiàng)數(shù)。
var arr = [1,3,4]; console.log(arr.splice(2,1));//[4] //刪除元素 console.log(arr);[1,3];
插入元素
splice(index,0,element,....)
index 表示要插入的位置,0代表刪除0個(gè)元素,element要插入的元素,如果要插入多個(gè)元素,可以繼續(xù)添加。
var arr = [1,3,4]; console.log(arr.splice(2,0,"tom"));//[ ] console.log(arr);//[1,3,"tom",4]
如果index的值大于數(shù)組本身的長(zhǎng)度,那么就在最后位置添加。且數(shù)組的長(zhǎng)度只會(huì)加1.
var arr = [1,3,4]; console.log(arr.splice(5,0,"tom"));//[ ] console.log(arr);//[1,3,4,"tom"] console.log(arr.length);//4
如果index的值為負(fù)數(shù),那么就從(arr.length+index)位置開(kāi)始插入,如果(arr.length+index)的值小于0,那么就從數(shù)組的開(kāi)始位置進(jìn)行插入。
var arr = [1,3,4,4,7,6]; console.log(arr.splice(-1,0,"tom"));//[ ] console.log(arr);//[1,3,4,4,7,"tom",6] console.log(arr.length);//7 console.log(arr.splice(-7,0,"tom"));//[ ] console.log(arr);//["tom",1,3,4,4,7,"tom",6] console.log(arr.length);//8 console.log(arr.splice(-10,0,"jack"));//[ ] console.log(arr);//["jack","tom",1,3,4,4,7,"tom",6] console.log(arr.length);//9
替換元素
splice(index,count,element,....).index代表替換開(kāi)始的位置,count > 0,element表示要替換成的元素。其實(shí)替換過(guò)程包含兩個(gè)過(guò)程:1.刪除. 2插入.也就是上面的兩個(gè)過(guò)程的融合。
var arr = [1,3,4]; console.log(arr.splice(1,1,"tom"));//[3] console.log(arr);//[1,"tom",4]
如果index大于數(shù)組的長(zhǎng)度,或者小于0,處理的結(jié)果同上面插入元素處理的方式一樣。
不改變數(shù)組的方法 轉(zhuǎn)換方法join方法主要是用來(lái)將數(shù)組的元素通過(guò)規(guī)定的方式連接成字符串。
var arr = [1,3,4,5]; console.log(arr.join(","))//1,3,4,5 console.log(arr.join("+"))//1+3+4+5 console.log(arr.join("?"))//1?3?4?5 console.log(arr)//[1,3,4,5]操作方法
slice和concat方法。
slice方法主要用來(lái)返回指定位置的數(shù)組的子數(shù)組。slice(start,end)。end省略,返回的是從開(kāi)始位置到數(shù)組的末尾。end不省略,返回的是從start到end之間的子數(shù)組,包括start位置但不包括end位置的數(shù)組。
var arr = [1,3,4,5]; console.log(arr.slice(1));//[3,4,5] console.log(arr.slice(1,2));//[3]
如果slice方法的參數(shù)中有一個(gè)負(fù)數(shù),則用數(shù)組長(zhǎng)度加上該數(shù)來(lái)確定相應(yīng)的位置。例如在一個(gè)長(zhǎng)度為5的數(shù)組上調(diào)用slice(-2,-1)與調(diào)用slice(3,4)得到的結(jié)果相同。如果結(jié)束位置小于起始位置,則返回空數(shù)組。
concat 方法,主要是連接多個(gè)數(shù)組。
var arr = [1,3,4,5]; var testArr = [1,23,4]; console.log(arr.concat(testArr));//[1,3,4,5,1,23,4] console.log(arr.concat("tom"));//[1,3,4,5,"tom"]迭代方法
ES5新增加的迭代方法主要包括如下幾種
map
every
some
fliter
forEach
這幾個(gè)方法有一下共同點(diǎn),都接收兩個(gè)參數(shù),一個(gè)是要在數(shù)組上每一項(xiàng)運(yùn)行的函數(shù),一個(gè)是運(yùn)行該函數(shù)作用域的對(duì)象,改變this的指向(可選)。其中函數(shù)需要傳入三個(gè)參數(shù),一個(gè)是每個(gè)元素的值,每個(gè)元素的index,數(shù)組本身。
function(value,index,array) { }
下面一個(gè)一個(gè)的來(lái)介紹
map
map返回?cái)?shù)組中每一個(gè)數(shù)組元素經(jīng)過(guò)傳入的函數(shù)處理后組成的新數(shù)組
var arr = [1,3,4]; var newArr = arr.map(function(value,index,array){ return value*2; }) console.log(newArr);//[2,6,8] console.log(arr);//[1,3,4]
some和every
some和every比較相像。some是對(duì)每一個(gè)數(shù)組中的元素運(yùn)行傳入的函數(shù),如果有一個(gè)返回true,那么就返回true;every是對(duì)每一個(gè)數(shù)組中的元素運(yùn)行傳入的函數(shù),如果所有的都返回true,那么就返回true。
var arr = [1,3,4]; var result1 = arr.some(function(value,index,array){ return value > 2; }) var result2 = arr.every(function(value,index,array){ return value > 2; }) console.log(result1);// true console.log(result2);// false
filter
從名字可以看出,這是一個(gè)過(guò)濾的方法,返回的一個(gè)數(shù)組,這個(gè)數(shù)組是滿足傳入的參數(shù)的函數(shù)的元素所組成的。
var arr = [1,3,4]; var result = arr.filter(function(value,index,array){ return value > 2; }) console.log(result);// [3,4]
forEach
forEach主要用來(lái)遍歷,遍歷數(shù)組中每一個(gè)元素,對(duì)其進(jìn)行操作。該方法沒(méi)有返回值。
var arr = [1,3,4]; arr.forEach(function(value,index,array){ console.log("arr["+index+"]="+value); }) // 結(jié)果 arr[0]=1 arr[1]=3 arr[2]=4縮小方法
reduce和reduceRight.這兩個(gè)方法接收兩個(gè)參數(shù),一個(gè)是每項(xiàng)都運(yùn)行的函數(shù),一個(gè)是縮小基礎(chǔ)的初始值(可選)。reduce和reduceRight返回的是一個(gè)值。其中每項(xiàng)都運(yùn)行的函數(shù)包含四個(gè)參數(shù),
funciton(prev,cur,index,array){ }
下面通過(guò)一個(gè)例子就可以說(shuō)明這個(gè)函數(shù)是干嘛的。
var arr = [1,3,4]; var result = arr.reduce(function(prev,cur,index,array){ return prev+cur; },10); console.log(result)//18 var result1 = arr.reduce(function(prev,cur,index,array){ return prev+cur; }); console.log(result1)//8
reduceRight和reduce一樣,無(wú)非他開(kāi)始的位置是從數(shù)組的后面。
其他方法indexOf()
lastIndexOf()
這兩個(gè)主要是用來(lái)判斷元素在數(shù)組中的位置,未找到返回-1,接收兩個(gè)參數(shù),indexOf(searchElement[, fromIndex]),lastIndexOf(searchElement[, fromIndex])。fromIndex可選。其中formIndex也可以指定字符串。
var arr = [1,3,4,4,1,5,1]; var value = arr.indexOf(1) console.log(value)//0 value = arr.indexOf(1,4) console.log(value)//4 value = arr.indexOf(1,5) console.log(value)//6 value = arr.lastIndexOf(1) console.log(value)//6 value = arr.lastIndexOf(1,3) console.log(value)//0
toString()
toLocalString()
valueOf()
這三個(gè)方法是所有對(duì)象都具有的方法。
toString()返回的是一個(gè)字符串,toLocaleString同它類似。valueOf()返回的是一個(gè)數(shù)組
var arr= [1,3,4] console.log(arr.toString());//1,3,4 console.log(arr.valueOf());//[1,3,4] console.log(arr.toLocaleString());//1,3,4
可以復(fù)寫(xiě)toString(),toLocaleString()返回不同的結(jié)果。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/94923.html
摘要:關(guān)于中的數(shù)組做出了如下總結(jié)數(shù)組是用來(lái)存儲(chǔ)一組不同類型的數(shù)據(jù)的容器。可以使用構(gòu)造函數(shù)的方法和字面量的方法來(lái)聲明函數(shù)訪問(wèn)數(shù)組通過(guò)下標(biāo)的方法來(lái)訪問(wèn)可以獲得數(shù)組長(zhǎng)度。 關(guān)于JavaScript中的數(shù)組做出了如下總結(jié):1、數(shù)組是用來(lái)存儲(chǔ)一組不同類型的數(shù)據(jù)的容器。可以使用構(gòu)造函數(shù)的方法和字面量的方法來(lái)聲明函數(shù);訪問(wèn)數(shù)組通過(guò)下標(biāo)的方法來(lái)訪問(wèn);arr.length可以獲得數(shù)組長(zhǎng)度。2、數(shù)組棧方法包括:...
摘要:并列數(shù)據(jù)的集合數(shù)組用方括號(hào)表示。第三種類型是映射,也就是一個(gè)名值對(duì),即數(shù)據(jù)有一個(gè)名稱,還有一個(gè)與之相對(duì)應(yīng)的值,這又稱作散列或字典,比如首都北京。中有種簡(jiǎn)單數(shù)據(jù)類型也稱為基本數(shù)據(jù)類型和。數(shù)值布爾值對(duì)象和字符串值都有方法。 什么是JSON JSON:JavaScript 對(duì)象表示法(JavaScript Object Notation)。 JSON的形式是用大括號(hào){}包圍起來(lái)的項(xiàng)目列表...
摘要:中基礎(chǔ)數(shù)據(jù)類型數(shù)據(jù)類型名稱數(shù)據(jù)類型說(shuō)明只有一個(gè)值,即,聲明變量的初始值。只有一個(gè)值,即,表示空指針,的值是派生的值。由零或多個(gè)位字符組成只有兩個(gè)值,即和該類型使用來(lái)表示整數(shù)和浮點(diǎn)數(shù)。中的對(duì)象其實(shí)就是一組數(shù)據(jù)和功能的集合。 JavaScript 中基礎(chǔ)數(shù)據(jù)類型 數(shù)據(jù)類型名稱 數(shù)據(jù)類型說(shuō)明 Undefined 只有一個(gè)值,即 undefined ,聲明變量的初始值。 Nul...
摘要:數(shù)組去重方法的總結(jié)前言在中數(shù)組是比較常用的,本文中總結(jié)了下數(shù)組去重的幾種常用方法,如有問(wèn)題,請(qǐng)指正。 JavaScript數(shù)組去重方法的總結(jié) 前言 在JavaScript中數(shù)組是比較常用的,本文中總結(jié)了下數(shù)組去重的幾種常用方法,如有問(wèn)題,請(qǐng)指正。 簡(jiǎn)單粗暴的一種,ES6中set方法: var arr = [1,2,2,3,3,4,5,5]; console.log([...new Se...
摘要:函數(shù)作用通過(guò)函數(shù)來(lái)封裝多條任意語(yǔ)句,可以在任何地方時(shí)候多次調(diào)用執(zhí)行函數(shù)使用聲明,后跟一組參數(shù)以及函數(shù)體。數(shù)組棧方法有數(shù)組頭部添加值,返回新數(shù)組,刪除數(shù)組中第一個(gè)值,返回被刪除的值數(shù)組尾部添加值,返回新數(shù)組數(shù)組尾部刪除值,返回被刪除的值 1、函數(shù)作用:通過(guò)函數(shù)來(lái)封裝多條任意語(yǔ)句,可以在任何地方、時(shí)候多次調(diào)用執(zhí)行;函數(shù)使用function聲明,后跟一組參數(shù)以及函數(shù)體。2、return:立即...
摘要:日常開(kāi)發(fā)中我們難免需要對(duì)數(shù)組和對(duì)象進(jìn)行遍歷,今天抽空來(lái)總結(jié)下遍歷數(shù)組和對(duì)象常用的方法。使用遍歷對(duì)象注只能遍歷出自身可枚舉的屬性,而不能遍歷出原型鏈上面的屬性。 日常開(kāi)發(fā)中我們難免需要對(duì)數(shù)組和對(duì)象進(jìn)行遍歷,今天抽空來(lái)總結(jié)下遍歷數(shù)組和對(duì)象常用的方法。 Javascript遍歷數(shù)組總結(jié) 我們定義一個(gè)數(shù)組 var arr = [2,4,6]; 1.使用for循環(huán)遍歷 var lengt...
閱讀 1140·2021-10-27 14:13
閱讀 2645·2021-10-09 09:54
閱讀 914·2021-09-30 09:46
閱讀 2432·2021-07-30 15:30
閱讀 2177·2019-08-30 15:55
閱讀 3419·2019-08-30 15:54
閱讀 2858·2019-08-29 14:14
閱讀 2780·2019-08-29 13:12