1. 当前所在位置:
  2. 首页
  3. 捕鱼大师

js的filter()方法 如何使用js的filter

2018-12-28 admin
  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遍历到它们那一刻的值。被删除或从来未被赋值的元素不会被遍历到。
 
  示例:
 
  /*
 
  filter()实例:筛选排除掉所有的小值​
 
  下例使用filter创建了一个新数组,该数组的元素由原数组中值大于10的元素组成。
 
  */
 
  functionisBigEnough(element){
 
  returnelement>=10;
 
  }
 
  varfiltered=[12,5,8,130,44].filter(isBigEnough);
 
  console.log(filtered);//[12,130,44]
 
  /*
 
  filter()兼容旧环境
 
  filter被添加到ECMA-262标准第5版中,因此在某些实现环境中不被支持。可以把下面的代码插入到脚本的开头来解决此问题,
 
  该代码允许在那些没有原生支持filter的实现环境中使用它。该算法是ECMA-262第5版中指定的算法
 
  */
 
  Array.prototype.filter=Array.prototype.filter||function(func){
 
  vararr=this;
 
  varr=[];
 
  for(vari=0;i<arr.length;i++){
 
  if(func(arr[i],i,arr)){
 
  r.push(arr[i]);
 
  }
 
  }
 
  returnr;
 
  }
捕鱼驾到