filter()把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素。 則我們可以運用到
1、在一個Array中,刪掉偶數保留奇數:
var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
return x % 2 !== 0;
});
console.log(r); // [1, 5, 9, 15]
複製程式碼
2、將Array中的空字串刪掉:
var arr = ['A', '', 'B', null, undefined, 'C', ' '];
var r = arr.filter(function (s) {
return s && s.trim(); // 注意:IE9以下的版本沒有trim()方法
});
r; // ['A', 'B', 'C']
複製程式碼
filter()
接收的回撥函式,可以有多個引數。通常我們僅使用第一個引數,表示Array
的某個元素。回撥函式還可以接收另外兩個引數,表示元素的位置和陣列本身:
1 var arr = ['A', 'B', 'C'];
2 var r = arr.filter(function (element, index, self) {
3 console.log(element); // 依次列印'A', 'B', 'C'
4 console.log(index); // 依次列印0, 1, 2
5 console.log(self); // self就是變數arr
6 return true;
7 });複製程式碼
利用
filter
,可以巧妙地去除Array
的重複元素:var r= [],
arr = ['apple', 'strawberry','pear', 'apple', 'orange', 'orange', 'strawberry'];
r = arr.filter(function (element, index, self) {
return self.indexOf(element) === index;
});
console.log(r.toString()); //apple,strawberry,pear,orange複製程式碼
去除重複元素依靠的是
indexOf
總是返回第一個元素的位置,後續的重複元素位置與indexOf
返回的位置不相等,因此被filter
濾掉了。當然去重有很多的方法,比如 :