//给pre 赋值一个[]*if(pre.indexOf(cur)===-1){
说明pre数组中不存在 cur 这个数据,需要把cur添加到 pre 数组中
pre.push(cur)
pre.concat(cur)return pre.concat(cur)}else{return pre
}return(pre.indexOf(cur)===-1)? pre.push(cur): pre
不能使用push push 的返回值是一个数组的长度 下一次的pre就是数组的长度 并不是一个数组
pre.indexOf is not a function出现这个错误
indexOf这个方法名写错
pre 没有这个方法
//需求:求两个数的交集var arr1 =[1,2,2,3,4,5];var arr2 =[2,2,3,4,,6,7,8];//第一步:遍历数组arr1,查询arr2之中是否含有arr1中的数组元素,若是有就把符合条件的元素放入新数组 ---使用filter方法var res = arr1.filter(function(item){//就是那拿arr1中的每一个元素,来数组arr2中查询,若是存在的话,就是证明 arr2.indexOf(item) !== -1return(arr2.indexOf(item)!==-1)})// console.log(res); //输出的res为 [2, 2, 3, 4] --- 这个数组含有重复的元素,需要去重//第二步:数组的去重 使用reduce方法
res = res.reduce(function(pre, cur){//查询数组中是否含有该元素,若是没有的话,就拼接上去(不能push),若是有的话,就需要返回上一次循环的返回值(也就是pre)return(pre.indexOf(cur)===-1)? pre.concat(cur): pre
},[])
console.log(res);// [2, 3, 4]var arr1 =[1,2,2,3,4,5];var arr2 =[2,2,3,4,,6,7,8];//第一步:查找两个数组中的交集 --- 拿第一个数组的元素去第二个数组里面查找,若是有该元素,就返回到一个新的数组let res = arr1.filter(function(items){return(arr2.indexOf(items)!==-1)})// console.log(res);//第二步:拿到有交集的数组,含有重复的数值,需要去重//查询数组本身是否含有该元素,若是没有就拼接这个元素到空数组,若是有就返回到原数组let res2 = res.reduce(function(pre, cur){//先给pre赋值为一个数组return(pre.indexOf(cur)===-1)? pre.concat(cur): pre
},[])var arr1 =[1,2,2,3,4,5];var arr2 =[2,2,3,4,,6,7,8];let res = arr1.filter(function(items){return(arr2.indexOf(items)!==-1)}).reduce(function(pre, cur){return(pre.indexOf(cur)===-1)? pre.concat(cur): pre
},[])
console.log(res);