array.filter() 数组过滤元素,可以将数组中不符合的元素去掉,返回一个新数组。
filter函数接受一个回调函数,把回调函数依次作用于元素
回调函数的第一个参数是元素,第二个参数是元素位置,第三个参数是数组本身
根据这个函数的返回值,rturn true/false, true保留该元素,false不保留该元素
示例一:
let arr = [1, 2, 3, 4, 5, 6];
let r = arr.filter(function(item){
return item % 2 != 0;
})
console.log(r) ; // [1, 3, 5]
let arr = [1,2,6,3,4,5];
let res = arr.filter(function(item,index,array){
//元素值,元素的索引,原数组。
return (item>3);
});
console.log(res);//[6, 4, 5]
示例二:创建一个数组,判断数组中是否存在或不存在某个值
//存在
var newarr = [
{ num: 1, val: 'ceshi', flag: 'aa' },
{ num: 2, val: 'ceshi2', flag: 'aa2' }
]
console.log(newarr.filter(item => item.num===2 ))
//不存在
var newarr = [
{ num: 1, val: 'ceshi', flag: 'aa' },
{ num: 2, val: 'ceshi2', flag: 'aa2' }
]
console.log(newarr.filter(item => item.num!=2 ))
示例3.去掉空数组空字符串、undefined、null
var arr = ['1','2',undefined, '3.jpg',undefined]
var newArr = arr.filter(item => item)
console.log(newArr)
var arr = ['1','2',null, '3.jpg',null]
var newArr = arr.filter(item => item)
console.log(newArr)
>//空字符串里面不能包含空格
var arr = ['1','2','', '3.jpg','']
var newArr = arr.filter(item => item)
console.log(newArr)
示例4.同个数组去重
var arr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 7,8,8,0,8,6,3,4,56,2];
var arr2 = arr.filter((x, index,self)=>self.indexOf(x)===index)
console.log(arr2); //[1, 2, 3, 4, 5, 6, 7, 8, 0, 56]