JS中的filter()
一、語法
array.filter(function(currentValue, indedx, arr), thisValue)
二、參數描述
currentValue:必須。當前元素的值;
index:可選。當前元素的索引值;
arr:可選。當前元素屬於的數組對象;
thisValue:可選。對象作為該執行回調時使用,傳遞給函數,用作 "this" 的值。
如果省略了 thisValue ,"this" 的值為 "undefined"。
三、注意
- filter用於對數組進行過濾。
- 它創建一個新數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。
- 注意:filter()不會對空數組進行檢測、不會改變原始數組
四、實例
原始數組
var arr = [3,9,4,3,6,0,9];
1. 返回數組nums中所有大於5的元素。
function max5(arr){
return arr.filter((x) => x > 5});
}
//ES6語法:箭頭函數(參數1, 參數2 ...) => { 函數體 }
//如果有且僅有 1 個形參,則()可以省略
//如果函數體內有且僅有 1 條語句,則{}可以省略,但前提是,這條語句必須是 return 語句。
2. 移除數組 arr 中的所有值與 item 相等的元素。不要直接修改數組 arr,結果返回新的數組
function remove(arr, item) { return arr.filter(val => val != item); }
3. 數組去重
var r = arr.filter(function (element, index, self) { return self.indexOf(element) == index; });
去除重復元素依靠的是indexOf
總是返回第一個元素的位置,后續的重復元素位置與indexOf
返回的位置不相等,因此被filter
濾掉了。
4. 在數組 arr 中,查找值與 item 相等的元素出現的所有位置
輸入
['a','b','c','d','e','f','a','b','c'] 'a'
輸出
[0, 6]
function findAllOccurrences(arr, target) { var res=[]; arr.filter(function(ele,index){ return (ele===target)&&res.push(index); }) return res; }
五、高級應用
待續