javascript filter()

定义:
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
语法:
array.filter(function(currentValue,index,arr), thisValue)
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
currentValue:必须。当前元素的值
index:可选。当前元素的索引值
arr:可选。当前元素属于的数组对象
thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。
如果省略了 thisValue ,“this” 的值为 “undefined”

如下所示,对应数组进行筛选,返回大于5的元素:

function test(item){
  return item>5
}
let arr = [1,5,6,9,8,7,5,12];
let tem = arr.filter(test);
console.log(tem);
运行结果:
VM1026:6 (5) [6, 9, 8, 7, 12]

应用:

(1)数组过滤:

let arr = [1,5,3,4,5,1,2,5,6,4,6,2,4]
let tem = arr.filter(function(i) {
  return i%2 === 0
})
console.log(tem)
运行结果:
VM1719:5 (7) [4, 2, 6, 4, 6, 2, 4]

(2)数组去重:

let arr = [1,5,3,4,5,1,2,5,6,4,6,2,4]
let tem = arr.filter(function(item,i,self) {
  return self.indexOf(item) === i
})
console.log(tem)
运行结果:
VM1665:5 (6) [1, 5, 3, 4, 2, 6]

原理:indexof返回数组项所在的索引,相同项返回第一个的索引。

(3)去除数组中的空字符串:

let arr = ['a','','b','','','c']
let tem = arr.filter(function(i) {
  return i && i.trim()
})
console.log(tem)
运行结果:
VM447:5 (3) ["a", "b", "c"]

你可能感兴趣的:(javascript filter())