let arr = [{title:'aaaa',read:1000,hot:true},
{title:'bbbb',read:300,hot:false},
{title:'cccc',read:2000,hot:true},
{title:'dddd',read:1900,hot:false}
];
// 第一种for
for(let i=0; i<arr.length;i++){
console.log(arr[i]);
}
// 第二种forEach
// forEach就是代替普通的for
arr.forEach(function(item,index,arr){// item:循环结果 index:下标 arr:原数组
console.log(item);
},'this指向,如果使用的是箭头函数无法改变this指向');
// 第三种map
// 它可以重新整理数据结构,可以返回一个新的数组
let newarr = arr.map((item,index,arr)=>{// item:循环结果 index:下标 arr:原数组
// console.log(item,index,arr);
let json = {};
json.t = `随便加点${item.title}----`;
json.r = `随便加点${item.read}----`;
json.h = `随便加点${item.hot}----`;
return json;
})
console.log(newarr)
// 第四种filter
// 过滤,过滤一些不合格或者不想要的元素,如果返回结果为true,就留下来
let newarr = arr.filter((item,index,arr)=>{// item:循环结果 index:下标 arr:原数组
return item.hot == true;//判断即可
})
console.log(newarr)
// 第五种some
// 类似查找,数组里面某一个元素符合条件,返回true
let newarr = arr.some((item,index,arr)=>{
return item.title == 'dddd';
})
console.log(newarr)
// 第六种every
// 类似查找,数组里面所有的元素都要符合条件,才返回true
arr2 = [1,3,5,7,9]
let newarr = arr2.every((item,index,arr)=>{
return item%2 == 1;//判断我的数组里面是否有偶数
})
console.log(newarr)
// 第七种reduce
// 求数组的和、阶乘,从左往右计算
arr3 = [1,2,3,4,5,6,7,8,9,10];
arr4 = [2,2,3];
let newarr = arr3.reduce((prev,cur,index,arr)=>{//prev:前一个 cur:当前 index:下标 arr:原数组
return prev+cur;
return Math.pow(prev,cur);//调用arr4的数组
return prev**cur;//或者使用幕运算符
})
console.log(newarr)
// 第八种reduceRight
// 求数组的和、阶乘,跟reduce正好相反,从右往左计算
arr3 = [2,2,3];
let newarr = arr3.reduceRight((prev,cur,index,arr)=>{//prev:前一个 cur:当前 index:下标 arr:原数组
// return prev+cur;
return Math.pow(prev,cur);
})
console.log(newarr)
ps:怎么样是不是又涨知识了,大家不要学我let声名这么多次newarr,我是注释这写的,大家要用的话直接,用哪个拿那个就OK。
这里给大家留一个坑,接下来给大家分享es6,的循环。
js循环,前端常用的八种循环,你用过几种呢?
最新推荐文章于 2024-09-18 15:35:04 发布