map,reduce,filter ,forEach 废话不多说代码走起
map 映射 就是一个对一个
/* 比如:学生成绩分数对应及格不及格 也可以做一些算数运算 */ let chengji = [12, 58, 99, 86, 45, 91]; /*可以接收返回的值*/ let result = chengji.map( item=> { if (item >= 60) { alert(item + "及格") } else { alert(item + "不及格回家叫家长") } })
reduce 汇总 一堆出来一个
/*算出总数*/ let arr = [12, 69, 180, 8763]; /* tmp 临时结果(每次第一个数和第二个数相加的结果), item 第二个数开始走 , index 下标(它这里是从第1个开始) */ let result = arr.reduce(function (tmp, item, index) { //alert(tmp + ',' + item + ',' + index); return tmp + item; }); alert(result); /*算出平均分*/ let result1 = arr.reduce(function (tmp, item, index) { if (index != arr.length - 1) { //判断不是最后一次 return tmp + item; } else { //最后一次哪这总数除以长度 return (tmp + item) / arr.length; } }); alert(result1);
filter 过滤器 (可以过滤josn或是数组)
/*过滤出大于10000元商品*/ let arr=[ {title: '男士衬衫', price: 75}, {title: '女士包', price: 57842}, {title: '男士包', price: 65}, {title: '女士鞋', price: 27531} ]; //返回的是一个数组 /*简写方式一行代码就搞定*/ let result=arr.filter(json=>json.price>=10000); /*不用简写麻烦*/ let result1=arr.filter(function(item){ if(item.price>=10000) { return true; } }) console.log(result) for(var i=0;i<result1.length;i++) { //取出arr里面的title alert(result[i].title) } /*取出能被3整除的数*/ //它是返回一个bool值,true返回 false过滤掉 let arr1=[12,5,8,99,27,36,75,11]; // let result2=arr1.filter(item=>item%3==0); alert(result2)
forEach 循环(迭代)
/*这个简单没啥说的*/ let arr=[12,5,8,9]; let arr1=[12,5,8,9]; // item 数组 index 下标 /*简写*/ arr.forEach((item,index)=>{ alert(index+': '+item); }); arr1.forEach(function(item,index){ alert(index + ': ' + item); })