国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript中filter的用法實例分析

2019-11-19 12:03:59
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript中filter的用法。分享給大家供大家參考,具體如下:

filter

filter也是一個常用的操作,它用于把Array的某些元素過濾掉,然后返回剩下的元素。

map()類似,Array的filter()也接收一個函數。和map()不同的是,filter()把傳入的函數依次作用于每個元素,然后根據返回值是true還是false決定保留還是丟棄該元素。

例如,在一個Array中,刪掉偶數,只保留奇數,可以這么寫:

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]

把一個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()這個高階函數,關鍵在于正確實現一個“篩選”函數。

回調函數

filter()接收的回調函數,其實可以有多個參數。通常我們僅使用第一個參數,表示Array的某個元素。回調函數還可以接收另外兩個參數,表示元素的位置和數組本身:

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;});

利用filter,可以巧妙地去除Array的重復元素:

'use strict';var  r,  arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];r = arr.filter(function (element, index, self) {  return self.indexOf(element) === index;});console.log(r.toString());

運行結果:

apple,strawberry,banana,pear,orange

去除重復元素依靠的是indexOf總是返回第一個元素的位置,后續的重復元素位置與indexOf返回的位置不相等,因此被filter濾掉了。

嘗試用filter()篩選出素數:

'use strict';function get_primes(arr) {  var i;  return arr.filter(function (element) {      var flag=true;      if(element<2){      flag=false;    }else {      for(var i=2;i<element;i++){        if (element%i==0){          flag=false;          break;        }      }    }    return flag;  });}// 測試:var  x,  r,  arr = [];for (x = 1; x < 100; x++) {  arr.push(x);}r = get_primes(arr);if (r.toString() === [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97].toString()) {  console.log('測試通過!');} else {  console.log('測試失敗: ' + r.toString());}

運行結果:

測試通過!

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼運行效果。

PS:這里再為大家推薦一款JS數組遍歷方式分析對比工具供大家參考:

在線JS常見遍歷方式性能分析比較工具http://tools.VeVB.COm/aideddesign/js_bianli

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數組操作技巧總結》、《JavaScript遍歷算法與技巧總結》、《javascript面向對象入門教程》、《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》及《JavaScript錯誤與調試技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霍山县| 隆回县| 张北县| 济南市| 昭苏县| 郴州市| 宝清县| 石河子市| 禹州市| 前郭尔| 民县| 襄汾县| 彭泽县| 若尔盖县| 方山县| 武清区| 西贡区| 海门市| 东宁县| 依兰县| 黎城县| 湟中县| 长寿区| 神农架林区| 图片| 项城市| 大安市| 珠海市| 漳浦县| 屯门区| 游戏| 绥滨县| 闻喜县| 灵台县| 永定县| 蒙城县| 互助| 迁西县| 鹤庆县| 祁阳县| 夹江县|