1乎芳、和map()類似馋缅,Array的filter()也接收一個(gè)函數(shù)贫途。和map()不同的是取刃,filter()把傳入的函數(shù)依次作用于每個(gè)元素蹋肮,然后根據(jù)返回值是true還是false決定保留還是丟棄該元素出刷。
var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
? ? return x % 2 !== 0;
});
r; // [1, 5, 9, 15]
2、把一個(gè)Array中的空字符串刪掉坯辩,可以這么寫:
var arr = ['A', '', 'B', null, undefined, 'C', ' '];
var r = arr.filter(function (s) {
? ? return s && s.trim(); // 注意:IE9以下的版本沒有trim()方法
});
r; // ['A', 'B', 'C']
3馁龟、回調(diào)函數(shù)
filter()接收的回調(diào)函數(shù),其實(shí)可以有多個(gè)參數(shù)漆魔。通常我們僅使用第一個(gè)參數(shù)坷檩,表示Array的某個(gè)元素「穆眨回調(diào)函數(shù)還可以接收另外兩個(gè)參數(shù)矢炼,表示元素的位置和數(shù)組本身:
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;
});