分类: javascript 1366阅读阅读模式
Array.prototype.filter()
filter()
方法创建一个新数组,以数组形式返回方法中条件为 true 的元素,如果没有则返回空数组。
语法:
- var new_array = arr.filter(callback(element[, index[, array]])[, thisArg])
如果为 filter 提供一个 thisArg 参数,则它会被作为 callback 被调用时的 this 值。否则,callback 的 this 值在非严格模式下将是全局对象,严格模式下为 undefined。
callback 最终观察到的this值是根据通常函数所看到的 "this"的规则确定的。filter 不会改变原数组,它返回过滤后的新数组。
示例:
如返回数组元素内容长度大于 6 的所有元素
- var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
- const result = words.filter(k => k.length > 6);
- console.log(result);// ["exuberant", "destruction", "present"]
如返回年龄大于 30 岁的人
- var users = [{ 'user': 'Tommy', 'age': 36},
- { 'user': 'Kim','age': 26},
- { 'user': 'Rosa', 'age': 16},
- { 'user': 'Mark', 'age': 46}];
- var newUsers = users.filter(k => k.age > 30);
- console.log(newUsers);// [{ 'user': 'Tommy', 'age': 36},{ 'user': 'Mark', 'age': 46}]
兼容性:
由于对旧浏览器不兼容,可插入下方代码到项目中去
- if (!Array.prototype.filter)
- {
- Array.prototype.filter = function(fun /* , thisArg*/)
- {
- "use strict";
- if (this === void 0 || this === null)
- throw new TypeError();
- var t = Object(this);
- var len = t.length >>> 0;
- if (typeof fun !== "function")
- throw new TypeError();
- var res = [];
- var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
- for (var i = 0; i < len; i++)
- {
- if (i in t)
- {
- var val = t[i];
- if (fun.call(thisArg, val, i, t))
- res.push(val);
- }
- }
- return res;
- };
- }