数组的高阶方法
1.filter 过滤 返回一个新的数组,如果回调函数返回true当前元素保留,否则被过滤掉
var arr1 = [8,-50,30,25,19,60,5,7];
// 目标:过滤 大于20的数
var arr2 = arr1.filter(function(item){
if(item>20){return true}
else{return false}
})
console.log("arr1",arr1)// [8,-50,30,25,19,60,5,7];
console.log("arr2",arr2)//[30,25,60]
2.forEach遍历 遍历数组
var arr=[1,2,3,4,5];
arr.forEach(function(item,index,self){
console.log(item,index,self);
})
3.map 映射 返回一和原数据一一对应关系的新数组
var arr = [1, 3, 5] //变成2 6 10
var arr2 = arr.map(
function(item, index, self) {
console.log(item, index, self)
return item * 2
}
)
console.log(arr2)
4.reduce 累计 a,b两个参数,a是上一次返回的结果
var arr = [2,3,4];
var ret = arr.reduce(function(a,b){return a+b})
alert(ret);//9
5.some 有一个 返回true或者false 只要回调函数有一个为true 则整个都返回true
// 目标判断 是否数组中国有大于20的数
var arr = [2,4,6,7,100,20,50];
var ret = arr.some(function(item){return item>20})
alert(ret);//true
6.every 每个 返回true或者false 回调函数都返回为true 则整个都返回true
var arr = [2,4,6,7,100,20,50];
var ret = arr.every(function(item){return item<120})
alert(ret);//true
函数
箭头函数
1.参数 => 函数体
var times = n=>alert(n*2)
// 声明一个变量times 为一个函数
// 函数参数位n 函数执行语句为aler(n*2)
// => 前函数的参数
// => 后是函数的执行语句也是 返回值
2.如果参数不是一个,要()包裹
var arr = [1,2,3,4];
// 目标求和
var ret = arr.reduce((a,b)=>{
console.log(a,b)
return a+b;
});
alert(ret);//10
3.函数体如果只有一句,执行的结果就是返回值
4.语句多条 1.用{}包裹 2.return返回
5.如果返回的是个对象 return({});
6.箭头函数中的this
// 默认setInterval this指向window
// 箭头函数this的指向为上一层作用域中的this obj;
var obj = {
age:18,
say:function(){
console.log("今年我"+this.age)
},
grow:function(){
window.setInterval(()=>{
this.age ++;
this.say();
},3000)
}
}
默认参数
function add(a=5,b=10){}
当参数值为underfind时 使用默认值
不定参数
function add(…args){}
args是一个有参数组成的数组
add(1,2) args=[1,2]
add(2,3,4) args=[2,3,4]
function add (...args){
var ret = args.reduce((a,b)=>a+b);
alert(ret);
}
add(2,8,1,7,3)//21
拓展参数
var arr = [1,2,3,4]
function add(a,b,c){}
add(…arr)
请用函数把arr数组展开
数组
fill(内容,start,end)
var arr = [1,3,5,7];
arr.fill("love",2,4);
console.log(arr);//1,2,love,love
copyWithin(替换位置,拷贝开始,拷贝结束)
var arr = [0,1,2,3,4,5,6,7];
arr.copyWithin(0,4,8);
console.log(arr);//45674567
查找
1.arr.includes(obj) 返回一个布尔值 arr是否包含obj
2.find元素 查找元素 find(item=>条件)
3.findindex 查找符合条件的下标
var arr = [2,7,10,100,50,255];
// 查找arr中是否有大于100的数
var ret = arr.findIndex(item=>item>100);
alert(ret);