JavaScript的array方法

JavaScript高級函數

1.map/reduce

map()

map()是array的一個方法javascript

做用: 對array中每個元素調用自定義函數java

'use strict';
function pow(x){
return x*x;
}
var arr=[1,2,3,4,5]
var newarray=arr.map(pow)

map的回調函數有三個參數:算法

callback(currentValue, index, array)一般只要第一個參數數組

PS: map()傳入的參數是pow,即函數對象自己函數

一般map調用的自定義方法只包含一個參數測試

reduce()

reduce()也是array的一個方法code

做用: 從數組的前兩個元素開始,做爲函數參數,傳入函數獲得結果,對象

結果再和下一個數組元素再一次調用函數,直到數組盡頭排序

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)

PS: 一般reduce()調用的自定義方法只包含兩個個參數索引

2.filter(篩選)

做用:把Array的某些元素過濾掉,而後返回剩下的元素.

map()相似,Arrayfilter()也接收一個函數。和map()不一樣的是,filter()把傳入的函數依次做用於每一個元素,而後根據返回值是true仍是false決定保留仍是丟棄該元素。

//去掉空字符串

var arr = ['A', '', 'B', null, undefined, 'C', '  '];
var r = arr.filter(function (s) {
    return s && s.trim(); // 注意:IE9如下的版本沒有trim()方法
});
r; // ['A', 'B', 'C']

回調函數

一般咱們僅使用第一個參數,表示Array的某個元素。回調函數還能夠接收另外兩個參數,表示元素的位置和數組自己:

var arr = ['A', 'B', 'C'];
var r = arr.filter(function (element, index, self) {
    console.log(element); // 依次打印'A', 'B', 'C'
    console.log(index); // 依次打印0, 1, 2
    console.log(self); // self就是變量arr
    return true;
});

篩選素數:

function get_primes(arr){
if(elem===1){
return false;
}
for(var i=2;i<=elem/2;i++){
if(elem%i==0)
{
return false;
}
}
return true;
});
return x;
}

PS: 關鍵在於正確實現一個「篩選」函數

3.sort(排序)

默認排序會把全部元素轉成String在排序,根據一個元素的ASCII值進行排序(非遞減)(TimSort算法)

兩兩比較,當回調函數返回值大於0時,交換元素值

自定義數字排序

'use strict' 
var arr=[10,20,1,2];

arr.sort(function(x,y){
    if (x < y) {
        return -1;
    }
    if (x > y) {
        return 1;
    }
    return 0;
});
console.log(arr); // [1, 2, 10, 20]

數字倒序排列

var arr = [10, 20, 1, 2];
arr.sort(function (x, y) {
    if (x < y) {
        return 1;
    }
    if (x > y) {
        return -1;
    }
    return 0;
}); // [20, 10, 2, 1]

4.其餘的Array方法

every()和some()

做用: 能夠判斷數組的全部元素是否知足測試條件(經過函數提供)

  • every()是所有知足的時候返回true,一個不知足返回false,並終止檢測

  • some()是所有不知足的時候返回false,有一個知足就返回true

find()

做用: 查找第一個符合條件的元素

查找符合條件的第一個元素,若是找到了就返回這個元素,不然,返回undefined

findindex()

做用: 查找第一個符合條件的元素的索引

查找符合條件的第一個元素,找到這個元素就返回他的索引,若是沒有找到就返回-1

forEach()

做用: 經常使用於遍歷數組

(和map相似)把數組每一個元素依次傳入函數,但不會返回新的數組.

相關文章
相關標籤/搜索