Array 物件 filter() 方法過濾元素
阿新 • • 發佈:2018-11-24
Array filter() 方法
filter() 方法建立一個新的陣列,新陣列中的元素是通過檢查陣列中符合條件的所有元素。
filter() 不會對空陣列進行檢測,也不會改變原始陣列,而是返回一個新的陣列。
注意與《JavaScript Array map() 方法》的區別,map 與 filter 都是在函式中處理原陣列中的每一個元素,並且返回新的陣列,原陣列不變。不同的是 map 方法對每個元素的處理結果必須返回,即無論對元素做了什麼操作,但必須返回一個結果;而 filter 方法處理每個元素重點是判斷元素是否符合某個條件,如果處理結果為 true ,則返回此元素,否則不再返回此元素。
語法:array.filter(function(currentValue,index,arr), thisValue)
引數 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|
function(currentValue, index,arr) | 必須。函式,陣列中的每個元素都會執行這個函式 函式引數:
|
||||||||
thisValue | 可選。物件作為該執行回撥時使用,傳遞給函式,用作 "this" 的值。 如果省略了 thisValue ,"this" 的值為 "undefined" |
編碼示例
<script type="text/javascript"> let json = {id: 101}; //往陣列中多添置一些資料型別 let arr1 = [1, 2, 30, 25, 18, 40, "Ha", undefined, NaN, null, json]; let arr2 = arr1.filter(function (currentValue, index) { console.log("開始處理第 " + index + " 元素"); //如果元素大於 25 ,則返回 return currentValue > 25; }); console.log(arr1.toString());//原陣列不變 console.log(arr2.toString());//新陣列中包含 30,40 </script>
執行結果如下:
<script type="text/javascript">
let json = {id: 101};
//往陣列中多添置一些資料型別
let arr1 = [1, 2, 30, 25, 18, 40, "Ha", undefined, NaN, null, json];
//過濾陣列中所有的數值元素
let arr2 = arr1.filter(function (currentValue) {
return !isNaN(currentValue);
});
console.log(arr1.toString());//原陣列不變
console.log(arr2.toString());//新陣列中包含 1, 2, 30, 25, 18, 40
</script>