一 迭代方法
ES5為數組定義了5個迭代方法,這些方法大大方便了處理數組的任務,支持這些方法的瀏覽器有 IE9+,Firefox2+,Safari3+,Opera9.5+和Chrome。
1 every
對數組中每一項進行給定函數,如果每一項都返回true,則返回true;
var numbers = [1,2,3,4,5,4,3,2,1]; var everyResult = numbers.every(function(item,index,array){ return item>2; }); alert(everyResult); //false
2 some
對數組中每一項進行給定函數,如果任意一項都返回true,則返回true;
var numbers = [1,2,3,4,5,4,3,2,1]; var everyResult = numbers.some(function(item,index,array){ return item>2; }); alert(everyResult); //true
3 filter
對數組中每一項進行給定函數,返回該函數會返回true的項組成的數組;
var numbers = [1,2,3,4,5,4,3,2,1]; var everyResult = numbers.filter(function(item,index,array){ return item>2; }); alert(everyResult); // [3,4,5,4,3]
4 map
對數組中每一項進行給定函數,返回每次函數調用的結果組成的數組
var numbers = [1,2,3,4,5,4,3,2,1]; var everyResult = numbers.map(function(item,index,array){ return item*2; }); alert(everyResult); // [2, 4, 6, 8, 10, 8, 6, 4, 2]
5 forEach
對數組中每一項進行給定函數,沒有返回值,和for循環類似
var numbers = [1,2,3,4,5,4,3,2,1]; numbers.forEach(function(item,index,array){ if(item!=2){ numbers.splice(index,1,2); } }); alert(numbers); // [2, 2, 2, 2, 2, 2, 2, 2, 2]
二 歸並方法
ES5新增了兩個歸並數組的方法:reduce()和reduceRight()。這兩個方法迭代數組所有項,然后構建一個最終返回的值。reduce從左到右,reduceRight從右到左。
var values = [1,2,3,4,5]; var sum = values.reduce(function(prev,cur,index,array){ return prev + cur; }); alert(sum); //15
reduce()函數接受四個參數;前一個值、當前值、index和數組對象。這個函數返回的任何值都會作為第一個參數自動傳給下一項。第一次迭代發生在第二項上,因此第一個參數是數組的第一項,第二個參數是數組的第二項。
三 檢測數組
ES3的方法:instanceof
var values = [1,2,3]; if(values instanceof Array){ //對數組進行某些操作 }
ES5的方法:Array.isArray
var values = [1,2,3]; if(Array.isArray(values)){ //對數組進行某些操作 }
四 轉換方法
1 toLocaleString() toString() valueOf()
2 join() 將數組轉換為字符串,且用分隔符分割
var colors = [1,2,3]; alert(colors.join("|")); // 1|2|3
五 棧方法
棧方法是指Last-In-First-Out后進先出
push() 從數組末尾添加
pop() 從數組末尾移除
六 隊列方法
隊列方法是First-In-First-Out先進先出
unshift() 從數組前端添加
shift() 從數組前端移除
七 重排序方法
reverse() 反轉數組 sort() 排序 var values = [0,1,5,10,15]; values.sort(function(a,b){ return b-a; }); console.log(values); //[15, 10, 5, 1, 0]
八 操作方法
1 concat() 用於復制或者從尾部添加–>創建新數組
先創建一個當前數組的副本,然后jiang將接到的數組添加到末尾,返回新的數組。如果沒有傳參數,直接復制返回新構建的數組。
var values = [1,2,3]; var v1 = values.concat(); var v2 = values.concat(4); console.log(values); //[1,2,3] console.log(v1); //[1,2,3] console.log(v2); //[1,2,3,4]
2 slice() 用於復制或截取數組–>創建新數組
截取當前數組的一部分創建一個新數組。可以接受一個或者兩個參數,只有一個參數時返回指定位置到尾部的數組。兩個參數時,返回指定位置到結束位置之前但不包括結束位置的數組。
var values = [1,2,3]; var v1 = values.slice(); var v2 = values.slice(1); var v3 = values.slice(1,3); console.log(values); //[1,2,3] console.log(v1); //[1,2,3] console.log(v2); //[2,3] console.log(v3); //[2,3]
3 splice() 用於刪除、插入、替換,號稱最強大的數組方法
3.1 刪除:可以刪除任意數量的項,需要兩個參數,要刪除的第一項的位置和要刪除的項數。
var values = [1,2,3,4,5,6]; var v = values.splice(0,2); console.log(values); //[3,4,5,6] console.log(v); //[1,2]
3.2 插入和替換:至少三個參數,第一個是起始位置,第二個是要刪除的項,第三個及以后shi yao是要插入或替換的值。
插入demo: var values = [1,2,3,4,5,6]; var v1 = values.splice(1,0,1,1,1); console.log(values); //[1,1,1,1,2,3,4,5,6] console.log(v1); //[] 替換demo: var values = [1,2,3,4,5,6]; var v1 = values.splice(1,2,1,1,1); console.log(values); //[1,1,1,1,4,5,6] console.log(v1); //[2,3]
九 位置方法
var values = [1,2,3,4,5]; indexOf() 從頭找指定項的位置 var v1 = values.indexOf(3); lastIndexOf() 從后往前查位置 var v2 = values.lastIndexOf(3);