ES6数组的高阶方法
- forEach 遍历
- map 映射
- filter 过滤
- reduce 累计
- every 每一个
- some 有一个
- sort 排序
1. forEach遍历
//forEach 遍历
// var arr=["我","爱","我","的","祖国"];
// arr.forEach(function(item,index,self){
// console.log(item,index,self);
// })
2.map 映射
//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)
3.filter 过滤
// filter 过滤
//回调函数如果返回true 当前 元素保留 如果返回false 当前元素过滤掉
// var arr1=[8,-50,30,25,19,69,3,5];
// // 目标:过滤 大于20的数
// var arr2=arr1.filter(function(item){
// if(item>20){
// return true;
// }else{
// return false;
// }
// })
// console.log(arr2)
4.reduce 累计
// reduce 累计 a,b两个结果 上一次计算结果是这一次的a
// var arr=[2,3,4];
// var ret=arr.reduce(function(a,b){
// return a+b
// })
// console.log(ret)
//第一次 a=2 b=3 5
// 第二次 a=5 b=4 9
5.every 每一个
// every 每个
// var arr=[2,3,5,64,32,34];
// 目标判断 是否数组中的每个元素都小于10
// var ret=arr.every(function(item){
// return item<120
// })
// 如果所有都小于10 最终返回true 有一个大于10返回false
// console.log(ret)
6.some 有一个
// some 有一个
// var ret1 =arr.some(function(item){return item>20});
// console.log(ret1)
7.sort 排序
// var arr=[1,23,12,32,21,9,35];
// arr.sort(function(a,b){
// return a-b;
// })
// alert(arr);
// var arr1=[{age:15},{age:3},{age:8}]
// arr1.sort(function(a,b){
// return a.age-b.age;
// })
// console.log(arr1)
箭头函数
- 组成 参数=>语句
- 参数不是一个 (参数1,参数2)=>语句
- 语句不止一条 参数=>{语句1;语句2;return 返回值}
- 返回的对象格式:参数=>({对象})
定义和调用函数:(传统写法)
function fn1(a, b) {
return a + b;
}
console.log(fn1(1, 2)); //输出结果:3
定义和调用函数:(ES6中的写法)
var fn2 = (a, b) => a + b;
console.log(fn2(1, 2)); //输出结果:3
如果不是一个参数,那么参数用()包裹
// var arr=[1,2,3,4];
//目标求和
// var ret=arr.reduce((a,b)=>a+b);
// alert(ret)
在箭头函数中,如果方法体内有两句话,那就需要在方法体外边加上{}括号
var fn2 = (a, b) => {
console.log('haha');
return a + b;
};
console.log(fn2(1, 2)); //输出结果:3
this的指向
ES5 中,this指向的是函数被调用的对象;而 ES6 的箭头函数中,this指向的是函数被定义时。
简单来说,箭头函数中的this,是不会变的,是永远绑定在当前的环境下。
ES6中的函数
1.函数的默认参数
// function add(a,b=10){
// alert(a+b);
// }
// add(1)
// add(1,3)
2.函数的不定参数
// function add(...args){
// var ret=args.reduce((a,b)=>a+b);
// alert(ret)
// }
// add(1)
// add(1,2,4,5)
3.函数的拓展参数
function meeting(a,b,c,d){
console.log("今天开会的有:",a,b,c,d);
}
// meeting("正金","开心","龙","虎")
var arr=["正金","开心","龙","向","虎"]
meeting(...arr)
数组的新增方法
填充fill(“填充内容”,start,end)
// var arr = [1,3,5,7];
// arr.fill("love",2,4);
// console.log(arr);
从数组拷贝替换元素copywithin(替换开始位置,拷贝开始位置,拷贝结束位)
var arr =[0,1,2,3,4,5]
var arr1=arr.copyWithin(0,3,5)
alert(arr1)
查找 includes
// var arr=["我","好","中意","你",100];
// alert(arr.includes("你"))
按条件查找 find查找元素
findindex查找下标
/ var arr=[1,32,435,34,65]
// var ret=arr.find(item=>item>100);
// alert(ret);
// 查找元素
// var ret1=arr.findIndex(item=>item>50)
// alert(ret1);
// 查找元素下标
ES6对象
简写方式
// var name = "贝";
// var age = 18;
// var user = {name:name,age:age,say:function(){alert(`大家好我的名字是${this.name},今年${this.age}`)
// }
// };
// var user = {
// name,
// age,
// say(){
// alert(`大家好我的名字是${this.name},今年${this.age}`)
// }
// };
// console.log(user);
对象的动态属性
var key = window.prompt("请输入对象名称","like");
var value = window.prompt("请输入对象值","好好学习");
var obj = {[key+"web"]:value};
console.log(obj);
对象的继承
// var man={
// leg:2,
// walk(){console.log(`我用我的两条腿步行`)}
// }
// var teacher = {
// name:"mumu",
// age:18,
// __proto__:man
// }