ES5数组的高阶方法
- forEach 遍历
遍历数组
var arr=["我","爱","我的","祖国"]
arr.forEach(function(item,index,self){
console.log(item,index,self);
})
- 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);
- filter() 过滤
返回一个新的数组
如果回调函数返回true当前元素保留,否则被过滤掉
// 过滤函数
// 回调函数如果返回true 当前元素保留
// 如果返回false 当前元素过滤掉
var arr1=[8,-50,30,25,19,60,5,7]
// 目标:过滤 大于20的数
var arr2=arr1.filter(function(item){
return item>20;
})
console.log(`arr1:${arr1}`);
console.log(`arr2:${arr2}`);
- reduce() 累计
a,b两个参数,a是上一次返回的结果
var arr=[2,3,4];
var ret=arr.reduce(function(a,b){
return a+b;
//第一次:a:2 b:3 返回 5
//第二次:a:5 b:4 返回 5
})
alert(ret);
- every() 每个
返回true或者false
回调函数都返回true则整个都返回true
var arr=[2,4,6,7,100,20,50];
//目标判断 是否数组中的每个元素都小于10
var ret=arr.every(function(item){
return item<120;
//如果所有都小于10 最终返回true,有一个大于10 返回false
})
alert(ret);
- some() 有一个
返回true或者false
只要回调函数有一个为true 则整个都返回true
var arr=[2,4,6,7,100,20,50];
目标判断 是否数组中国有大于20的数
var ret =arr.some(function(item){
return item<10;
})
alert(ret);
- sort 排序
var arr=[1,17,20,25,2,9,80];
arr.sort(function(a,b){
return a-b; //从小到大排序
return b-a; //从大到小排序
});
alert(arr);
var arr=[{age:15},{age:1},{age:8}];
arr.sort(function(a,b){
return a.age-b.age;//年龄从小到大排序
return b.age-a.age;//年龄从大到小排序
});
console.log(arr);
函数
箭头函数
- 参数 => 函数体
- 函数体:如果只有一句,执行的结果就是返回值
- 如果参数不是一个,要()包裹
- 语句多条1.用{}包裹2.return 返回
- 如果返回的是个对象 return({})
- 箭头函数this执行的作用域的上一层
var obj={
age:18,
say:function(){
console.log("今年我"+this.age)
},
grow:function(){
setInterval(()=>{
this.age ++;
this.say();
},3000)
},
}
// 默认setInterval this指向window
// 箭头函数this的指向为上一层作用域中的this obj
默认参数
- 当参数值为undefined时 使用默认值
function add(a=5,b=10){}
不定参数
function(...args){}
args是一个由参数组成的数组
add(1,2) args=[1,2]
add(2,4,6) args=[2,4,6]
拓展参数
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); //love 填充5,7
console.log(arr);
- copyWithIn(替换位置,拷贝开始,拷贝结束)
var arr=[0,1,2,3,4,5,6,7];
var arr1=arr.copyWithin(0,4,8);
console.log(arr1);
- 查找
-返回一个布尔值 arr是否包含obj
arr.includes(obj)
var arr=["我","好","中意","你",100];
alert(arr.includes("你"));//包含返回true 不包含返回false
- 查找 按 条件查找 find 查找元素 findIndex 查找下标
var arr=[2,7,10,100,50,255];
//查找arr中是否有大于100 的数
var ret=arr.find(item=>item>100);
alert(ret);
var ret=arr.findIndex(item=>item>100));
//查找arr中大于300数的下标,找不到返回-1
alert(ret);