您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關JavaScript中有哪些數組方法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
1.indexOf()
和lastIndexOf()
1.1 indexOf()
: 返回元素在數組的索引,從0
開始。若數組不存在該元素,則返回-1
。
var arr = [1, 2]; arr.indexOf(1); //0 arr.indexOf(10); //-1
1.2 lastIndexOf()
:返回元素在數組中最后一次出現的索引,如果沒有出現則返回-1.
var arr = [1, 2, 3, 4, 2]; arr.lastIndexOf(2); // 4
2.slice()
: 與字符串
的substring()
方法一樣,截取數組的一部分,返回一個新的數組。
2.1 通常,接受2個參數作為一個左閉右開區間,即包括開始索引位置的元素,但不包括結束索引位置的元素。
var arr = [1, 2, 3,4,5,6]; arr.slice(0,2) //[1, 2] 只返回索引0,1位置的元素
2.2 可以省略第二個參數,即截取到原數組的最后一個元素。
arr.slice(2,); //[3, 4, 5, 6]
2.3 如果沒有傳參數,則返回一個從頭到尾截取所有元素的新數組。可以用來復制一個數組。
var copyArr = arr.slice(); copyArr; //[1, 2, 3, 4, 5, 6]
3.concat()
: 合并數組。把當前的數組和另一個數組連接起來,并返回一個新的數組。
3.1 concat()
方法的參數可以有多個,也可以任意任意類型,數值
、字符串
、布爾值
、數組
、對象
都可以,參數會被被添加到新的數組中。
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 注意,如果參數是數組
, 會被拉平一次,即數組會被拆開來,加入到新的數組中。具體看示例:
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()
: 轉成字符串。它會把當前Array的每個元素都用指定的字符串連接起來,然后返回連接后的字符串。
4.1 參數是用來指定連接的字符串。見示例代碼:
var arr = [1, 2, 3]; arr.join('*') //"1*2*3"
4.2 如果沒有指定參數,默認是用,
連接。
var arr = [1, 2, 3]; arr.join() //"1,2,3"
5.toString()
: 返回數組的字符串形式
var arr = [1, 2, 3]; arr.toString() // "1,2,3"
6.valueOf()
:返回數組本身
var arr = [1, 2, 3]; arr.valueOf() // [1, 2, 3]
7.map()
:
7.1 對數組的所有成員依次調用一個函數
,返回值是一個新數組。
var arr = [1, 2, 3]; arr.map(function(elem){ return elem*2; }); //[2, 4, 6, 8] arr; //[1, 2, 3]
7.2 map
方法接受一個函數作為參數,該函數調用時,map方法會將其傳入3個參數,分別是當前成員、當前位置和數組本身(后2個參數可選)。
arr.map(function(elem, index, arr) { return elem * index; }); //[0, 2, 6]
7.3 map
方法還可以接受第2個參數,表示回調函數執行時this
所指向的對象。
8.forEach()
: 與map方法很相似,也是遍歷數組的所有成員,執行某種操作。注意:forEach
方法一般沒有返回值
var arr = [1, 2, 3]; function log(element, index, array) { console.log('[' + index + '] = ' + element); } arr.forEach(log); // [0] = 1 // [1] = 2 // [2] = 3
注意: forEach
方法無法中斷執行,總是會將所有成員遍歷完。如果希望符合某種條件時,就中斷遍歷,要使用for循環
。
9.filter()
:
9.1 篩選數組的元素,返回值是符合篩選條件元素組成的一個新數組。
var arr = [1, 2, 3, 4, 5]; arr.filter(function (elem) { return (elem > 3); }); //[4, 5]
9.2 filter
方法接受一個函數作為參數,該函數調用時,fitler
方法會將其傳入3個參數,分別是當前成員、當前位置和數組本身(后2個參數可選)。
var arr = [1, 2, 3, 4, 5]; arr.filter(function (elem, index, arr) { return index % 2 === 1; }); //[2, 4]
9.3 filter
方法還可以接受第2個參數,指定測試函數所在的上下文對象
(即this對象
)。
10.some()
和every()
: 類似“斷言”(assert),用來判斷數組成員是否符合某種條件。
10.1 接受一個函數作為參數,所有數組成員依次執行該函數,返回一個布爾值
。該函數接受三個參數,依次是當前位置的成員、當前位置的序號和整個數組。
10.2 some
方法是只要有一個數組成員的返回值是true,則整個some方法的返回值就是true,否則false。
var arr = [1, 2, 3, 4]; arr.some(function (elem, index, arr) { return elem >= 3; }); // true
10.3 every
方法則是所有數組成員的返回值都是true,才返回true,否則false。
var arr = [1, 2, 3, 4]; arr.every(function (elem, index, arr) { return elem >= 3; }); // false
10.4 注意,對于空數組
,some
方法返回false,every
方法返回true
10.5 some
和every
方法還可以接受第2個參數,用來綁定函數中的this關鍵字
。
11.reduce()
和reduceRight()
: 依次處理數組的每個成員,最終累計為一個值。
11.1reduce
是從左到右
處理(從第一個成員到最后一個成員)
arr.reduce(function(x, y){ console.log(x, y) return x + y; }); // 1 2 // 3 3 // 6
11.2reduceRight
則是從右到左
處理(從最后一個成員到第一個成員)
arr.reduceRight(function(x, y){ console.log(x, y) return x + y; }); // 3 2 // 5 1 // 6
1.push()
: 向數組的末尾添加若干元素。返回值是改變后的數組長度。
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()
: 刪除數組最后一個元素。返回值是刪除的元素。
var arr =[1, 2, 3, "b", "c", [10,20]]; arr.pop(); //[10, 20] arr; // [1, 2, 3, "b", "c"]
3.unshift()
: 向數組頭部添加若干元素。返回值是改變后的數組長度。
var arr = [1, 2]; arr.unshift(3,4 ); //4 arr; // [3, 4, 1, 2]
4.shift()
: 刪除數組最后一個元素。返回值是刪除的元素。
var arr = ['a', 'b', 1, 2]; arr.shift(); //'a' arr; //['b', 1, 2]
5.sort()
: 數組排序。
5.1 注意:默認是將所有元素轉換成字符串
,再按字符串Unicode碼點
排序。返回值是新的數組。
var arr = [1, 2, 12, 'a', 'b', 'ab', 'A', 'B'] arr.sort(); //[1, 12, 2, "A", "B", "a", "ab", "b"] 注意:12排在了2的前面
5.2 如果元素都是數字
,要按從小到大
排序,可以傳入一個回調函數作為參數。
`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()
: 顛倒數組中元素的位置
var arr = [1, 2, 12, 'a', 'b', 'ab', 'A', 'B']; arr.reverse(); //["B", "A", "ab", "b", "a", 12, 2, 1]
7.splice()
: 修改數組元素(新增、刪減、替換)。從指定的索引
開始刪除若干個
元素,然后再從該位置添加若干個元素
。返回值是刪除的元素組成的數組。參數1是刪除元素的起始索引,參數2是刪除的元素個數,之后的參數為待添加的元素。
7.1 只刪除,不添加。可以傳入2個參數:
`var arr = ['Alibaba', 'Tencent', 'Baidu', 'XiaoMi', '360'];
// 從索引2開始刪除3個元素 arr.splice(2, 3); // 返回刪除的元素 ['Baidu', 'XiaoMi', '360'] arr; // ['Alibaba', 'Tencent']`
7.2 只添加,不刪除。第2個參數設為0
,即不刪除元素。
arr.splice(2, 0, 'Toutiao', 'Meituan', 'Didi'); // 返回[],因為沒有刪除任何元素 arr; //["Alibaba", "Tencent", "Toutiao", "Meituan", "Didi"]
7.3 先刪除若干元素,然后在刪除的位置上在添加若干個元素。
var arr =["Alibaba", "Tencent", "Toutiao", "Meituan", "Didi"] arr.splice(2,2,'Apple','Google'); //["Toutiao", "Meituan"] arr; //["Alibaba", "Tencent", "Apple", "Google", "Didi"]
Array.isArray()
用來判斷一個值是否為數組, 如果參數為數組,返回true,否則,返回false.
`var arr = [1,2] Array.isArray(arr); //true;
Array.isArray('a'); //false`http://www.smxfk.com
看完上述內容,你們對JavaScript中有哪些數組方法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。