您的位置:首页 > 其它

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

2018-03-13 20:29 816 查看
数组循环之前循环:(1)for(let i = 0; i<arr.length; i++){}(2)whileES6新增循环方法1.arr.forEach():用来代替普通for循环,接收两个参数(循环的回调函数,this的指向(可选,用的比较少))无返回值例:之前let arr = ['apple','banana','orange'];for(let i = 0;i<arr.length;i++){console.log(arr[i]);} //applebananaorange用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) //87.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){ //默认循环valueconsole.log(val );} //applebananaorangefor(let index of arr.keys()){ //循环索引console.log(index );} //012for(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(): 找出第一个符合要求的项,找到返回该值,没找到返回undefinedlet arr = [45,78,109,56,198];let res = arr.find(val,index,arr){return val>100;}console.log(res); //1014.arr.findIndex():用法类似arr.find(),找到返回该值的下标,没找到返回-15.arr.fill():填充数组 传的参数(需要填充的值,填充的位置);第二个参数可以不写,默认数组全部都填充6.在ES2016新增的,arr.includes('串1'):如果数组arr中含有串1,如果包含返回true,反之返回false(前端小白,如有错误,欢迎指正~~)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ES6 数组循环