溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JavaScript中有哪些數(shù)組方法

發(fā)布時(shí)間:2021-06-24 15:41:35 來(lái)源:億速云 閱讀:159 作者:Leah 欄目:編程語(yǔ)言

今天就跟大家聊聊有關(guān)JavaScript中有哪些數(shù)組方法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

不改變?cè)瓟?shù)組的方法:

1.indexOf() 和lastIndexOf()

1.1 indexOf() : 返回元素在數(shù)組的索引,從0開(kāi)始。若數(shù)組不存在該元素,則返回-1。

var arr = [1, 2]; arr.indexOf(1); //0 arr.indexOf(10); //-1

1.2 lastIndexOf():返回元素在數(shù)組中最后一次出現(xiàn)的索引,如果沒(méi)有出現(xiàn)則返回-1.

var arr = [1, 2, 3, 4, 2]; arr.lastIndexOf(2); // 4

2.slice(): 與字符串substring()方法一樣,截取數(shù)組的一部分,返回一個(gè)新的數(shù)組。

2.1 通常,接受2個(gè)參數(shù)作為一個(gè)左閉右開(kāi)區(qū)間,即包括開(kāi)始索引位置的元素,但不包括結(jié)束索引位置的元素。

var arr = [1, 2, 3,4,5,6]; arr.slice(0,2) //[1, 2] 只返回索引0,1位置的元素

2.2 可以省略第二個(gè)參數(shù),即截取到原數(shù)組的最后一個(gè)元素。

arr.slice(2,); //[3, 4, 5, 6]

2.3 如果沒(méi)有傳參數(shù),則返回一個(gè)從頭到尾截取所有元素的新數(shù)組??梢杂脕?lái)復(fù)制一個(gè)數(shù)組。

var copyArr = arr.slice(); copyArr; //[1, 2, 3, 4, 5, 6]

3.concat(): 合并數(shù)組。把當(dāng)前的數(shù)組和另一個(gè)數(shù)組連接起來(lái),并返回一個(gè)新的數(shù)組。

3.1 concat()方法的參數(shù)可以有多個(gè),也可以任意任意類(lèi)型,數(shù)值、字符串、布爾值、數(shù)組、對(duì)象 都可以,參數(shù)會(huì)被被添加到新的數(shù)組中。

var arr1 = [1, 2, 3,4,5,6]; var arr2 = ['a','b','c']; var arr3 = arr1.concat(arr2); arr3; //[1, 2, 3, 4, 5, 6, "a", "b", "c"]

3.2 注意,如果參數(shù)是數(shù)組, 會(huì)被拉平一次,即數(shù)組會(huì)被拆開(kāi)來(lái),加入到新的數(shù)組中。具體看示例:

var arr1 = [1, 2, 3]; var arr2 = arr1.concat(66,'abc',true,[10,20],[30,[31,32]],{x:100}); arr2; //[1, 2, 3, 66, "abc", true, 10, 20, 30, [31,32], {x:100}]

4.join(): 轉(zhuǎn)成字符串。它會(huì)把當(dāng)前Array的每個(gè)元素都用指定的字符串連接起來(lái),然后返回連接后的字符串。

4.1 參數(shù)是用來(lái)指定連接的字符串。見(jiàn)示例代碼:

var arr = [1, 2, 3]; arr.join('*') //"1*2*3"

4.2 如果沒(méi)有指定參數(shù),默認(rèn)是用,連接。

var arr = [1, 2, 3]; arr.join() //"1,2,3"

5.toString(): 返回?cái)?shù)組的字符串形式

var arr = [1, 2, 3]; arr.toString() // "1,2,3"

6.valueOf():返回?cái)?shù)組本身

var arr = [1, 2, 3]; arr.valueOf() // [1, 2, 3]

7.map():

7.1 對(duì)數(shù)組的所有成員依次調(diào)用一個(gè)函數(shù),返回值是一個(gè)新數(shù)組。

var arr = [1, 2, 3]; arr.map(function(elem){ return elem*2; }); //[2, 4, 6, 8] arr; //[1, 2, 3]

7.2 map方法接受一個(gè)函數(shù)作為參數(shù),該函數(shù)調(diào)用時(shí),map方法會(huì)將其傳入3個(gè)參數(shù),分別是當(dāng)前成員、當(dāng)前位置和數(shù)組本身(后2個(gè)參數(shù)可選)。

arr.map(function(elem, index, arr) { return elem * index; }); //[0, 2, 6]

7.3 map方法還可以接受第2個(gè)參數(shù),表示回調(diào)函數(shù)執(zhí)行時(shí)this所指向的對(duì)象。

8.forEach(): 與map方法很相似,也是遍歷數(shù)組的所有成員,執(zhí)行某種操作。注意forEach方法一般沒(méi)有返回值

var arr = [1, 2, 3]; function log(element, index, array) { console.log('[' + index + '] = ' + element); } arr.forEach(log); // [0] = 1 // [1] = 2 // [2] = 3

注意forEach方法無(wú)法中斷執(zhí)行,總是會(huì)將所有成員遍歷完。如果希望符合某種條件時(shí),就中斷遍歷,要使用for循環(huán)

9.filter():

9.1 篩選數(shù)組的元素,返回值是符合篩選條件元素組成的一個(gè)新數(shù)組。

var arr = [1, 2, 3, 4, 5]; arr.filter(function (elem) { return (elem > 3); }); //[4, 5]

9.2 filter方法接受一個(gè)函數(shù)作為參數(shù),該函數(shù)調(diào)用時(shí),fitler方法會(huì)將其傳入3個(gè)參數(shù),分別是當(dāng)前成員、當(dāng)前位置和數(shù)組本身(后2個(gè)參數(shù)可選)。

var arr = [1, 2, 3, 4, 5]; arr.filter(function (elem, index, arr) { return index % 2 === 1; }); //[2, 4]

9.3 filter方法還可以接受第2個(gè)參數(shù),指定測(cè)試函數(shù)所在的上下文對(duì)象(即this對(duì)象)。

10.some()every(): 類(lèi)似“斷言”(assert),用來(lái)判斷數(shù)組成員是否符合某種條件。

10.1 接受一個(gè)函數(shù)作為參數(shù),所有數(shù)組成員依次執(zhí)行該函數(shù),返回一個(gè)布爾值。該函數(shù)接受三個(gè)參數(shù),依次是當(dāng)前位置的成員、當(dāng)前位置的序號(hào)和整個(gè)數(shù)組。

10.2 some方法是只要有一個(gè)數(shù)組成員的返回值是true,則整個(gè)some方法的返回值就是true,否則false。

var arr = [1, 2, 3, 4]; arr.some(function (elem, index, arr) { return elem >= 3; }); // true

10.3 every方法則是所有數(shù)組成員的返回值都是true,才返回true,否則false。

var arr = [1, 2, 3, 4]; arr.every(function (elem, index, arr) { return elem >= 3; }); // false

10.4 注意,對(duì)于空數(shù)組,some方法返回false,every方法返回true

10.5 someevery方法還可以接受第2個(gè)參數(shù),用來(lái)綁定函數(shù)中的this關(guān)鍵字。

11.reduce()reduceRight(): 依次處理數(shù)組的每個(gè)成員,最終累計(jì)為一個(gè)值。

11.1reduce從左到右處理(從第一個(gè)成員到最后一個(gè)成員)

arr.reduce(function(x, y){ console.log(x, y) return x + y; }); // 1 2 // 3 3 // 6

11.2reduceRight則是從右到左處理(從最后一個(gè)成員到第一個(gè)成員)

arr.reduceRight(function(x, y){ console.log(x, y) return x + y; }); // 3 2 // 5 1 // 6

改變?cè)瓟?shù)組的方法:

1.push(): 向數(shù)組的末尾添加若干元素。返回值是改變后的數(shù)組長(zhǎng)度。

var arr = [1, 2]; arr.push(3) ;// 3 arr; // [1, 2, 3] arr.push('b','c'); //5 arr; //[1, 2, 3, "b", "c"] arr.push([10,20]); //6 arr; //[1, 2, 3, "b", "c", [10,20]]

2.pop(): 刪除數(shù)組最后一個(gè)元素。返回值是刪除的元素。

var arr =[1, 2, 3, "b", "c", [10,20]]; arr.pop(); //[10, 20] arr; // [1, 2, 3, "b", "c"]

3.unshift(): 向數(shù)組頭部添加若干元素。返回值是改變后的數(shù)組長(zhǎng)度。

var arr = [1, 2]; arr.unshift(3,4 ); //4 arr; // [3, 4, 1, 2]

4.shift(): 刪除數(shù)組最后一個(gè)元素。返回值是刪除的元素。

var arr = ['a', 'b', 1, 2]; arr.shift(); //'a' arr; //['b', 1, 2]

5.sort(): 數(shù)組排序。

5.1 注意:默認(rèn)是將所有元素轉(zhuǎn)換成字符串,再按字符串Unicode碼點(diǎn)排序。返回值是新的數(shù)組。

var arr = [1, 2, 12, 'a', 'b', 'ab', 'A', 'B'] arr.sort(); //[1, 12, 2, "A", "B", "a", "ab", "b"] 注意:12排在了2的前面

5.2 如果元素都是數(shù)字,要按從小到大排序,可以傳入一個(gè)回調(diào)函數(shù)作為參數(shù)。

`var arr = [1, 2, 12, 100]

arr.sort(function(a,b){ return a-b; }); // [1, 2, 12, 100]`

5.3 如果想要從大到小排序:

arr.sort(function(a,b){ return b-a; }); //[100, 12, 2, 1]

6.reverse(): 顛倒數(shù)組中元素的位置

var arr = [1, 2, 12, 'a', 'b', 'ab', 'A', 'B']; arr.reverse(); //["B", "A", "ab", "b", "a", 12, 2, 1]

7.splice(): 修改數(shù)組元素(新增、刪減、替換)。從指定的索引開(kāi)始刪除若干個(gè)元素,然后再?gòu)脑撐恢锰砑?code>若干個(gè)元素。返回值是刪除的元素組成的數(shù)組。參數(shù)1是刪除元素的起始索引,參數(shù)2是刪除的元素個(gè)數(shù),之后的參數(shù)為待添加的元素。

7.1 只刪除,不添加。可以傳入2個(gè)參數(shù):

`var arr = ['Alibaba', 'Tencent', 'Baidu', 'XiaoMi', '360'];

// 從索引2開(kāi)始刪除3個(gè)元素 arr.splice(2, 3); // 返回刪除的元素 ['Baidu', 'XiaoMi', '360'] arr; // ['Alibaba', 'Tencent']`

7.2 只添加,不刪除。第2個(gè)參數(shù)設(shè)為0,即不刪除元素。

arr.splice(2, 0, 'Toutiao', 'Meituan', 'Didi'); // 返回[],因?yàn)闆](méi)有刪除任何元素 arr; //["Alibaba", "Tencent", "Toutiao", "Meituan", "Didi"]

7.3 先刪除若干元素,然后在刪除的位置上在添加若干個(gè)元素。

var arr =["Alibaba", "Tencent", "Toutiao", "Meituan", "Didi"] arr.splice(2,2,'Apple','Google'); //["Toutiao", "Meituan"] arr; //["Alibaba", "Tencent", "Apple", "Google", "Didi"]

Array.isArray()

用來(lái)判斷一個(gè)值是否為數(shù)組, 如果參數(shù)為數(shù)組,返回true,否則,返回false.

`var arr = [1,2] Array.isArray(arr); //true;

Array.isArray('a'); //false`http://www.smxfk.com

看完上述內(nèi)容,你們對(duì)JavaScript中有哪些數(shù)組方法有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI