數組內置的一些處理方法

在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的方式來使用在字符串上

相關文章
相關標籤/搜索