javascript全局数组Js中的filter()⽅法
/*
filter()⽅法使⽤指定的函数测试所有元素,并创建⼀个包含所有通过测试的元素的新数组。
filter()基本语法:
arr.filter(callback[, thisArg])
  filter()参数介绍:
  参数名说明
  callback  ⽤来测试数组的每个元素的函数。调⽤时使⽤参数 (element, index, array)
  返回true表⽰保留该元素(通过测试),false则不保留。
  thisArg    可选。执⾏ callback 时的⽤于 this 的值。
  filter()⽤法说明:
    filter 为数组中的每个元素调⽤⼀次 callback 函数,并利⽤所有使得 callback 返回 true 或等价于 true 的值的元素创建⼀个新数组。
    callback 只会在已经赋值的索引上被调⽤,对于那些已经被删除或者从未被赋值的索引不会被调⽤。那些没有通过 callback 测试的元素会被跳过,不会被包含在新数组中。    callback 被调⽤时传⼊三个参数:
    元素的值
    元素的索引
    被遍历的数组
    如果为 filter 提供⼀个 thisArg 参数,则它会被作为 callback 被调⽤时的 this 值。否则,callback 的this 值在⾮严格模式下将是全局对象,严格模式下为 undefined。
    filter 不会改变原数组。
    filter 遍历的元素范围在第⼀次调⽤ callback 之前就已经确定了。在调⽤ filter 之后被添加到数组中的元素不会被 filter 遍历到。
    如果已经存在的元素被改变了,则他们传⼊ callback 的值是 filter 遍历到它们那⼀刻的值。被删除或从来未被赋值的元素不会被遍历到。
*/
1/*
2    filter()实例:筛选排除掉所有的⼩值
3
4下例使⽤ filter 创建了⼀个新数组,该数组的元素由原数组中值⼤于 10 的元素组成。
5
6*/
7
8function isBigEnough(element) {
9return element >= 10;
10 }
11var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
12
13 console.log(filtered);//[ 12, 130, 44 ]
1/*
2  filter()兼容旧环境
3  filter 被添加到 ECMA-262 标准第 5 版中,因此在某些实现环境中不被⽀持。可以把下⾯的代码插⼊到脚本的开头来解决此问题,
4  该代码允许在那些没有原⽣⽀持 filter 的实现环境中使⽤它。该算法是 ECMA-262 第 5 版中指定的算法
5*/
6
7 Array.prototype.filter = Array.prototype.filter || function(func) {
8var arr = this;
9var r = [];
10for (var i = 0; i < arr.length; i++) {
11if (func(arr[i],i,arr)) {
12                r.push(arr[i]);
13            }
14        }
15return r;
16 }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。