在JS中個,數組是一個Array對象,有它本身內置的方法,今天來講一部分,能夠去除循環,來實現對數組的遍歷而且進行必定的操做數組
1.forEach函數
數組遍歷方法,用在數組的遍歷上,參數是一個回調函數,函數會傳入數組的每個數值,若是數組索引被修改了,那麼遍歷會繼續沿着索引向下。例如:測試
1 var array = [1,2,3,4,5]; 2 array.forEach(function(data){ 3 console.log(data);//1,2,3,5 4 if(data==3){ 5 a = array.shift();//shift函數移除數組的第一個元素 6 alert(a);//彈出1 7 } 8 });
2.mapspa
這個方法會返回一個新數組,這個數組裏面的值是回調函數裏面放回的值。prototype
var array = [1,2,3,4,5]; array = array.map(function(data){//map函數返回一個數組,數組中的每一個元素都是回調函數放回的值 return data*2; }); console.log(array);//2,4,6,8,10
3.everycode
這個方法會根據傳入的參數最後返回的boolean值來判斷,若是傳入的參數的值都知足了回調函數裏面的要求,即都返回了true的話,那麼every函數也返回true,只要有一個不知足,返回了false的話,那麼最後every函數返回的結果就是false對象
var array = [1,2,3,4,5]; var flag = array.every(function(currentValue){//測試數組中的每個值是否都知足條件,即都返回true if(currentValue<6){ return true; } }); console.log(flag);//true
4.someblog
與every函數對應的方法是some,some只須要求傳入的參數有一個知足要求,即只須要有一個返回的是true,那麼這個函數返回的就是true,要想函數返回的是false,就要求傳入的參數都不知足回調函數裏的要求,即都是false索引
var array = [1,2,3,4,5]; var a = array.some(function(currentValue){//只要有知足條件的,就是true return currentValue>4 }); console.log(a);//true
5.filter字符串
這個函數是一個過濾器,會將全部知足條件的函數返回到一個新的數組中,原數組不變,新數組中實際上是返回了原數組中知足條件的元素
var array = [1,2,3,4,5]; array = array.filter(function(index) {//返回一個新數組,數組內的元素是知足函數獲得的元素 if(index>=4){ return index; } }); console.log(array);//4,5
6.find
返回第一個知足條件的元素
var array = [1,2,3,4,5]; var a=array.find(function(currentValue){//返回第一個知足條件的元素 if(currentValue<3){ return currentValue; }; }); console.log(a);//1
7.findIndex
這個方法和find方法差很少,只是findIndex方法返回的是第一個知足元素的下標
var array = [1,2,3,4,5]; var a=array.findIndex(function(currentValue){//返回第一個知足條件的元素的索引 if(currentValue<3){ return currentValue; }; }); console.log(a);//0
8.reduce
這個函數實現了對數組遍歷和累加,累乘的功能
var array = [1,2,3,4]; var a = array.reduce(function(accumulator,currentValue){//從左至右遍歷數組,第一個參數是在第一次傳參時是數組的第一個值,以後爲上一次回調函數返回的值,第二參數爲當前值,從2個位置開始。 return accumulator*currentValue;//將數組累乘; });
上面的代碼實現了
var array = [1,2,3,4]; function reduce(){ for(var i=0,result=1;i<array.length;i++){ result*=array[i]; } return result; }
可是用reduce沒有了循環。
9.reduceRight
這個函數實現的功能和reduce沒什麼區別,只是reduce從左往右,而reduceRight從右往左
最後說一下,其實以上方法是可讓字符串經過call方法來調用的,功能也是同樣的
var str = "Hello World!"; var a = Array.prototype.reduceRight.call(str,function(accumulator,currentValue){//從左至右遍歷數組 return accumulator+currentValue; }); console.log(a);
輸出就是什麼呢?
沒錯,就是!dlroW olleH
其餘的方法也能夠經過call的方式來使用在字符串上