JavaScript 筛选方法 filter() 的使用

分类 javascript 58阅读阅读模式

Array.prototype.filter()

filter()方法创建一个新数组,以数组形式返回方法中条件为 true 的元素,如果没有则返回空数组。

语法:

  1. var new_array = arr.filter(callback(element[, index[, array]])[, thisArg])

如果为 filter 提供一个 thisArg 参数,则它会被作为 callback 被调用时的 this 值。否则,callback 的 this 值在非严格模式下将是全局对象,严格模式下为 undefined。
callback 最终观察到的this值是根据通常函数所看到的 "this"的规则确定的。

filter 不会改变原数组,它返回过滤后的新数组。

示例:

如返回数组元素内容长度大于 6 的所有元素

  1. var words = ['spray''limit''elite''exuberant''destruction''present'];
  2. const result = words.filter(k => k.length > 6);
  3. console.log(result);// ["exuberant", "destruction", "present"]

 

如返回年龄大于 30 岁的人

  1. var users = [{ 'user''Tommy''age': 36},
  2.   { 'user''Kim','age': 26},
  3.   { 'user''Rosa''age': 16},
  4.   { 'user''Mark''age': 46}];
  5. var newUsers = users.filter(k => k.age > 30);
  6. console.log(newUsers);// [{ 'user': 'Tommy', 'age': 36},{ 'user': 'Mark', 'age': 46}]

 

兼容性:

由于对旧浏览器不兼容,可插入下方代码到项目中去

  1. if (!Array.prototype.filter)
  2. {
  3.   Array.prototype.filter = function(fun /* , thisArg*/)
  4.   {
  5.     "use strict";
  6.     if (this === void 0 || this === null)
  7.       throw new TypeError();
  8.     var t = Object(this);
  9.     var len = t.length >>> 0;
  10.     if (typeof fun !== "function")
  11.       throw new TypeError();
  12.     var res = [];
  13.     var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
  14.     for (var i = 0; i < len; i++)
  15.     {
  16.       if (i in t)
  17.       {
  18.         var val = t[i];
  19.         if (fun.call(thisArg, val, i, t))
  20.           res.push(val);
  21.       }
  22.     }
  23.     return res;
  24.   };
  25. }

 

 

 

 

 

 

相关文章

给我留言

  • 有人回复时邮件通知我