javascript中Array類型常用方法
阿新 • • 發佈:2017-11-22
urn 字符 長度 splice ear 位置 調用 each 使用
方法總覽:
- instanceOf
- Array.isArray()
- toString()
- join()
- push()
- pop()
- shift()
- unshift()
- splice()
- concat()
- slice()
- indexOf
- lastIndexOf
- reverse()
- sort()
- forEach()
- filter()
- map()
- every()
- some()
- reduce()
- reduceRight()
一、檢測方法
- instanceof
- Array.isArray() (ES5 新增)
var arr = [1,2,3,4,5,6]; arr instanceof Array; // true Array.isArray(arr); // true
二、轉換為字符串的方法
轉換方法不改變原數組,只返回轉換後的字符串
- toString()
var arr1 = [1,2,3,4,6]; var arr2 = [‘a‘,‘b‘,‘c‘,‘d‘]; arr1.toString(); // ‘1,2,3,4,5,6‘ arr2.toString(); // ‘a,b,c,d‘
- join()
/* * join方法只接受一個參數,即用作分隔符的字符串, * 然後返回包含所有數組項的字符串 */ var arr = [1,2,3,4,5]; arr.join(‘‘); // ‘12345‘ arr.join(‘-‘); // ‘1-2-3-4-5‘
三、操作方法
1. 會改變原數組的操作方法
- push()
/* * arr.push(arg1,arg2,arg3...) * push方法接收任意數量的參數,並逐個添加到目標數組末尾, * 返回值為目標數組修改後的長度 */ var arr = [1,2,3]; alert(arr.push(4,5)); // 5 alert(arr); // [1,2,3,4,5]
- pop()
/* * arr.pop() * pop方法為從目標數組末尾移除一項,並返回該移除項 */ var arr = [1,2,3,4,5]; alert(arr.pop()); // 5 alert(arr); // [1,2,3,4]
- shift()
/* * arr.shift() * shift方法為從目標數組開頭移除一項,並返回該移除項 */ var arr = [1,2,3,4,5]; alert(arr.shift()); // 1 alert(arr); // [2,3,4,5]
- unshift
/* * arr.unshift(arg1,arg2,arg3...) * unshift方法接收任意數量的參數,並逐個添加到目標數組開頭, * 返回值為目標數組修改後的長度 */ var arr4 = [1,2,3]; alert(arr4.unshift(4,5)); // 5 alert(arr4); // [4,5,1,2,3]
- splice()
/* * Array.splice(index,howmany,arg1,arg2...); * splice主要用途為向數組中插入項,方法主要為兩種: * 刪除: splice(要刪除的第一項的位置,要刪除的項數) * 插入或替換: splice(起始位置,要刪除的項數,要插入的項數) * * 返回值為一個包含刪除項的數組 */ // 刪除 var arr1 = [‘one‘,‘two‘,‘three‘]; var remove = arr1.splice(1,1); alert(remove); // [‘two‘] alert(arr1); // [‘one‘,‘three‘] // 插入 var arr2 = [‘one‘,‘two‘,‘three‘]; var remove = arr2.splice(1,2,‘four‘,‘five‘); alert(remove); // [‘two‘,‘three‘] alert(arr2); // [‘one‘,‘four‘,‘five‘] // 替換 var arr3 = [‘one‘,‘two‘,‘three‘]; var remove = arr3.splice(1,1,‘four‘); alert(remove); // [‘two‘] alert(arr3); // [‘one‘,‘four‘,‘three‘]
2. 不會改變原數組的方法
- concat()
/* * Array.concat(arg1,arg2,arg3...) * concat方法為先創建當前數組一個副本,然後將接收的參數添加到副本末尾, * 最後返回該新數組 */ var arr = [1,2,3]; var a = [‘one‘,‘two‘]; var b = ‘three‘; var c = { name: ‘four‘}; var newArr = arr.concat(a,b,c); alert(newArr); // [1,2,3,‘one‘,‘three‘,{name:‘four‘}]
- slice()
/* * Array.slice(start,end) * slice方法為截取數組,返回截取項組成的新數組 * slice 為一個參數時,截取該參數指定的開始項到數組的末尾 * slice 為兩個參數時,截取參數指定的起始和結束項,但不包括結束項(包左不包右) */ var arr = [1,2,3,4,5,6,7,8,9]; var sliceArr1 = arr.slice(3); // [4,5,6,7,8,9] var sliceArr2 = arr.slice(3,5); // [4,5] var sliceArr3 = arr.slice(3,-1); // [4,5,6,7,8] var sliceArr4 = arr.slice(-3,-1); // [7,8] var sliceArr5 = arr.slice(-1,-3); // []
- indexOf() 與 lastIndexOf()
/* * indexOf(value,start),lastIndexOf(value,start) * 兩方法都為數組查找方法,查找目標項成功則返回數組該值的索引, * 查找失敗則返回-1 * 第一個參數為要查找的目標值,第二個參數查找的起始位置 * indexOf 為正序查找 * lastIndexOf 為逆序查找 */ var arr = [‘one‘,‘two‘,‘two‘,‘three‘,‘four‘,‘four‘,‘five‘]; var index1 = arr.indexOf(‘two‘); // 1 var index2 = arr.indexOf(‘two‘,2); // 2 var index3 = arr.lastIndexOf(‘four‘); // 5 var index4 = arr.lastIndexOf(‘four‘,4); // 4
四、排序方法
排序方法會改變原數組
- reverse()
/* * Array.reverse() * 翻轉數組項的順序 * */ var arr = [1,2,3,4,5]; arr.reverse(); alert(arr); // [5,4,3,2,1]
- sort()
/* * Array.sort(callback) * sort為數組的排序方法,默認按數組每一項進行toString()後的結果進行 * 升序排序 * sort接收一個回調函數為參數,回調函數有兩個參數,代表數組的前一項和 * 後一項,如果第一個參數應該位於第二個之前則返回一個負數,如果兩個參數相等 * 則返回 0,如果第一個參數應該位於第二個之後則返回一個正數 */ var arr1 = [2,1,4,3,5]; var arr2 = [1,50,10,500,100,1000]; arr1.sort(); arr2.sort(); alert(arr1); // [1,2,3,4,5] alert(arr2); // [1,10,100,1000,50,500] arr2.sort(function(pre,next) { if(pre < next) { return -1; }else if(pre === next) { return 0; }else { return 1; } }); alert(arr2); // [1,10,50,100,500,1000]
五、叠代方法(ES5)
數組的叠代方法都接收一個回調函數,這個回調函數會在數組的每一項上運行,回調函數接收三個參數:數組項的值,數組項的索引,數組對象本身。
- forEach():對數組中的每一項運行給定函數。沒有返回值。
var arr = [‘one‘,‘two‘,‘three‘]; arr.forEach(function(item,index,thisArr) { // 叠代的item 為arr 每一項的值 // 叠代的index 為arr 每一項的索引 // thisArr 為 數組arr });
- filter():對數組的每一項運行給定函數, 返回該函數會返回 true 的項組成的數組。
var arr = [1,2,3,4,5,6,7]; var filterArr = arr.filter(function(item,index,thisArr) { return item > 4; }); alert(filterArr); // [5,6,7]
- map(): 對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組。
var arr = [1,2,3,4,5,6,7]; var mapArr = arr.map(function(item,index,thisArr) { return item + 10; }); alert(mapArr); // [11,12,13,14,15,16,17]
- every(): 對數組中的每一項運行給定函數,如果該函數對每一項都返回 true,則返回 true。
var arr = [1,2,3,4,5,6,7]; var every1 = arr.every(function(item,index,thisArr) { // 對數組每一項與4進行比較 return item > 4; }); alert(every1); // false var every2 = arr.every(function(item,index,thisArr) { // 對數組每一項與8進行比較 return item < 8; }); alert(every2); // true
- some(): 對數組中的每一項運行給定函數,如果該函數對任一項返回 true,則返回 true。
var arr = [1,2,3,4,5,6,7]; var some = arr.some(function(item,index,thisArr) { // 對數組每一項與4進行比較,只要有一項大於4,就返回true return item > 4; }); alert(some); // true
- reduce(),reduceRight(): 叠代數組的所有項,然後構建一個最終返回的值, 傳給 reduce()和 reduceRight()的函數接收 4 個參數:前一個值、當前值、項的索引和數組對象。這個函數返回的任何值都會作為第一個參數自動傳給下一項。
var arr = [1,2,3,4,5]; // 使用reduce進行數組求和操作 var sum = arr.reduce(function(pre,current,index,thisArr) { return pre + current; }); // reduceRight 則從相反方向,即從右向左叠代,結果一致 alert(sum); // 15
javascript中Array類型常用方法