ES6笔记一
最近在系统的学习ES6,自己做的笔记,如有错误,还望订正,谢谢。
这篇主要介绍数组循环
//案例一 热闹的数组循环
//1.数组的循环
//1.1 forEach() 等同于for循环
let arr1=['spring','summer','autumn','winter']
let a=arr1.forEach(function(val,index,arr){
p=`我是值:${val},我是索引:${index},我是数组:${arr}`
console.log(p)
});
console.log(a)
//注:结果为undefined,因为一个函数执行完没有返回值,默认为undefined,所以console.log(a)值为undefined
//1.2 map() 需要配合return使用,不配合return使用等同于fonEach循环,可以用来整理数据
let arr2=[
{name:'小新',age:'5',like:'美女姐姐'},
{name:'美冴',age:'29',like:'超级特惠'},
{name:'小葵',age:'1',like:'珍珠'},
{name:'广志',age:'29',like:'美女'},
{name:'风间',age:'5',like:'可爱P'}
]
let arr3= arr2.map(function(val,index,arr){
let newObject={};
newObject.name=`住在春日部${val.name}`;
newObject.age=`年龄:${val.age}`;
newObject.like=`爱好:${val.like}`
return newObject;
});
console.log(arr3)
//1.3 filter() 过滤 留下结果为true的值
let arr4=[
{name:'小新',age:'5',like:'美女姐姐'},
{name:'美冴',age:'29',like:'超级特惠'},
{name:'小葵',age:'1',like:'珍珠'},
{name:'广志',age:'29',like:'美女'},
{name:'风间',age:'5',like:'可爱P'}
]
let D=arr4.filter((val,index,arr)=>{
return val.age>15;
});
console.log(D)
//切记.forEach()、.map() .filter() .some() .every()等这些函数都有两个实参,那.forEach()举例:arr.forEach(function回调函数,this指向谁)
//这里要注意function回调函数有三个参数function(val,index,arr),分别为:val是值,index是每项的索引,arr是数组;当回调函数,
//写成箭头函数形式,要注意,this就指向的就是你定义函数所在的对象,例如函数定义所在对象是在window,那么this指向的就是window
// function(){}; 写成箭头函数是 ()=>{};
//1.4 some() 类似与查找,当数组中数某一元素符合就返回true,无符合就返回false
let arr5=['monday','tuseday','wednesday','turyday','friday']
let e=arr5.some((val,index,arr)=>{
return val=='friday';
});
console.log(e)
//1.5 every()和some()类似,它要求每一项都符合才返回true,否则false
let arr6=[2,5,7,9]
// let arr6=[1,3,5,7,9]
let f=arr6.every((val,index,arr)=>{
return val%2==1;
});
console.log(f)
//以上的几个比较类似,下面看这两个
//1.6 reduce()可以用来求和,求阶乘,求幂次方,先说一下它的参数
//reduce(prev,cur,index,arr) prev指是前一个元素,cur指的是当前元素,index是索引,arr是数组
let arr7=[2,2,3]
let g=arr7.reduce((prev,cur,index,arr)=>{
//return Math.pow(prev,cur); //表示a的n次方,prev是a,cur是n
return prev**cur; //a**n 也表示a的n次方,是ES2017新增的
});
console.log(g)
//1.7 reduceRight() 和reduce()一样,只不过它是从右向左计算的
let arr8=[2,2,3]
let h=arr8.reduceRight((prev,cur,index,arr)=>{
return prev**cur;
});
console.log(h);
//for...of
// 数组属性方法 arr.keys()获取索引,arr.entries获取数组每一项
let arr9=['banana','apple','orange']
for(let val of arr9){
console.log(val);
};
for (let index of arr9.keys()){
console.log(index)
};
for (let [key,val] of arr9.entries()){
console.log(key,val)
}