您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)JavaScript中有哪些數(shù)組方法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
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 some
和every
方法還可以接受第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
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è)資訊頻道,感謝大家的支持。
免責(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)容。