js相關語法基礎(5)高階函式
阿新 • • 發佈:2019-01-06
函式可以指向某個變數,一個函式可以接受另外一個函式作為引數變數,這種函式就叫做高階函式。
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修改掉即可。