中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中filter的用法實例分析

發布時間:2020-09-22 14:09:03 來源:腳本之家 閱讀:134 作者:cjx_work 欄目:web開發

本文實例講述了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.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

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

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

集贤县| 迁安市| 祁连县| 靖安县| 蒲江县| 阿图什市| 汾阳市| 乃东县| 蒙自县| 三门县| 密山市| 靖西县| 彭州市| 应用必备| 页游| 四子王旗| 米易县| 泰兴市| 河曲县| 永安市| 尖扎县| 怀安县| 延寿县| 化州市| 会理县| 剑河县| 章丘市| 遂平县| 武隆县| 华容县| 密山市| 北京市| 永平县| 鹤庆县| 卢湾区| 敦煌市| 永兴县| 永昌县| 会理县| 南靖县| 固始县|