ES6学习总结之数组循环方法

数组循环
之前循环:
(1)for(let i = 0; i<arr.length; i++){}
(2)while
ES6新增循环方法
1.arr.forEach():用来代替普通for循环,接收两个参数(循环的回调函数,this的指向(可选,用的比较少))无返回值
例:之前
let arr = ['apple','banana','orange'];
for(let i = 0;i<arr.length;i++){
console.log(arr[i]);
} //apple
banana
orange
用forEach():
let arr = ['apple','banana','orange'];
arr. foeEach(function(val,index,arr){
console.log(val,index,arr);
})
2.arr.map():
#‘映射’ 用法同forEach(),经常用来做数据交互
#正常情况下,需要配合return,返回的是一个新的数组
#若是没有return ,相当于firEach();
#注意,平时只要用map,filter,some,every,就要配合return使用,
#可以重新整理数据
let arr = [
{title:'aaa',read:100',hot:true},
{title:'bbb',read:56,hot:true},
{title:'ccc',read:36,hot:true},
{title:'ddd',read:67,hot:true}
];
let newArray = arr. map((item,index,arr)=>{
let json = {};
json.t = `^-^${item.title}----`;
json.t = item.read+200;
json.hot = item.hot == true&&'真棒';
return json;
})
console.log(newArray ); //返回修改后的数组
3.arr.filter():过滤,过滤掉不合格的元素,如果回调函数为true,则留下来
let arr = [
{title:'aaa',read:100',hot:false},
{title:'bbb',read:56,hot:true},
{title:'ccc',read:36,hot:false},
{title:'ddd',read:67,hot:true}
];
let newArray = arr. filter((item,index,arr)=>{
return item.hot == true;
})
console.log(newArray ); //只会返回 item.hot == true的数据;

4.arr.some():类似查找,只要有一个符合条件的元素就返回true,反之返回false
例1:let arr = ['apple','banana','orange'];
let b =arr.some((val,index,arr)=>{
return val==banana;
})
console.log(b) //true;


反例:let arr = ['apple','banana','orange'];
let b =arr.some((val,index,arr)=>{
return val==banana22;
})
console.log(b) //false;
5.arr.every():只有数组中所有元素符合条件就返回true,反之返回false
例:

6.arr.reduce():类似递归,传的参数(pre(当前值得前一个值),cur(当前值),index(当前值得索引),arr(数组本身)),从左向右计算
(1)求数组的和
例:
let arr = [1,2,3,4,5,6,7,8,9,10]
let result = arr.reduce((pre,cur,index,arr)=>{
return pre+cur;
})
console.log(result); //55
还可求阶乘和次方等
ES2017新增幂运算符:**
例:console.log(2**3) //8
7.arr.reduceRight():从右向左计算
例:
let arr = [2,2,3];
let res = arr.reduceRight((pre,cur,index,arr)=>{
return pre**cur;
})
console.log(res) //81

8.for...of 循环
arr.keys() 数组下标
arr.entries() 数组某项
let arr = ['apple','banana','orange'];
for(let val of arr){ //默认循环value
console.log(val );
} //apple
banana
orange
for(let index of arr.keys()){ //循环索引
console.log(index );
} //0
1
2
for(let item of arr.entries()){ //循环某项
console.log(item );
} //[0,'appple']
[1,'banana']
[2,'orange']
for(let [ley,val] of arr.entries()){
console.log(key,val);
} ///0,'appple'
1,'banana'
2,'orange'


数组的其他方法:
1.Array.from(arr) //将类数组转换为数组
其他方法:[].slice.call(类数组)
2.Array.of() //将一组值转成数组
例:
let arr = Array.of('apple','banana','orange');
console.log(arr) //['apple','banana','orange']
3.arr.find(): 找出第一个符合要求的项,找到返回该值,没找到返回undefined
let arr = [45,78,109,56,198];
let res = arr.find(val,index,arr){
return val>100;
}
console.log(res); //101
4.arr.findIndex():用法类似arr.find(), 找到返回该值的下标,没找到返回-1
5.arr.fill():填充数组 传的参数(需要填充的值,填充的位置);第二个参数可以不写,默认数组全部都填充
6.在ES2016新增的,arr.includes('串1'):如果数组arr中含有串1,如果包含返回true,反之返回false

(前端小白,如有错误,欢迎指正~~)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值