<script>
// filter方法
// 和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,
// 然后根据返回值是true还是false决定保留还是丢弃该元素。
// 下面我们来试一试取出里面的奇数
let arr = [1,2,3,4,5,6,7,8,9,10]
let newArr = arr.filter(function(item){return item%2===1});
// 当1%2===1时,返回true,所以1被保留,3被保留,5被保留,7被保留,9被保留,其他被丢弃。
// 打印一下
console.log(newArr)//[1, 3, 5, 7, 9]
// 把一个Array中的空字符串删掉,可以这么写:
// var arr1 = ['A', '', 'B', null, undefined, 'C', ' '];
// var r = arr1.filter(function (s) {
// return s && s.trim(); // 注意:IE9以下的版本没有trim()方法
// });
// console.log(r); // ['A', 'B', 'C']
// 回调函数
// filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身:
console.log("回调函数")
var arr3= ['A', 'B', 'C','C','A', 'B', 'C'];
var r1 = arr3.filter(function (element, index, self) {
console.log("依次打印"+element); // 依次打印A,B,C,C,A,B,C
console.log("------")
console.log(index); // 依次打印索引。0, 1, 2,3,4,5,6
console.log("------------")
console.log("数组"+self); // self就是变量arr打印A,B,C,C,A,B,C
return true;
});
console.log("去重前的数组"+r1);
var r2 = arr3.filter(function (element, index, self) {
return self.indexOf(element) === index;
});
console.log("去重后的数组"+r2);
// set方法也可以去重
var arr7=[1,2,3,4,5,5,2,4,3]
var arr5=[...new Set(arr7)];
console.log("去重后的数组"+arr5);//去重后的数组1,2,3,4,5
</script>