1. 程式人生 > >js相關語法基礎(5)高階函式

js相關語法基礎(5)高階函式

 

 

函式可以指向某個變數,一個函式可以接受另外一個函式作為引數變數,這種函式就叫做高階函式。

function add(x, y, f) {
    return f(x) + f(y);
}

map方法定義在js的array中,呼叫array的map方法,傳入我們自己的函式,就可以得到一個新的array作為結果。

function pow(x){
    return x * x;
}
var arr = [1,2,3,4,5];
var res = arr.map(pow);
console.log(res);

reduce方法,把一個函式作用在這個array上面,這個函式必須接受2個引數,reduce()把結果繼續和序列的下一個元素做累計運算。其效果便是。

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
var res =arr.reduce(function(x,y){
    return x + y;
})
console.log(res);

輸出為15

filter函式 可以將array陣列中的元素進行過濾。filter()把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素。

var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
    return x % 2 !== 0;
});

 

filter可以添加回調函式 第一個是元素,第二個是下標,第三個是陣列本身

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;
});

 sort方法。認為x < y 返回 -1 認為x == y 返回0 認為x > 0 返回 1

['Google', 'Apple', 'Microsoft'].sort();

可以進行升序排列。

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);

如果要降序排列,只要return 1和-1修改掉即可。