循环遍历的区别
forEach
直接循环数组,没有返回值
如何结束循环:
是结束本次循环是可以使用return,但是结束全部循环return无效,
原因:好像是因为forEach不管符不符合都会走完所有的循环,所以return结束本次循环后,会继续其他的循环,只是我的通俗理解
解决:
1. 抛出错误,中断循环
var BreakException = {};
try {
[1, 2, 3].forEach(function(el) {
console.log(el);
if (el === 2) throw BreakException;
});
} catch (e) {
if (e !== BreakException) throw e;
}
2. 使用[Array#some]
some() 为数组中的每一个元素执行一次 callback 函数,
直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。
如果找到了这样一个值,some() 将会立即返回 true。
[1, 2, 3].some(function(el) {
console.log(el);
return el === 2;
});
for
循环数组,对数组的每一项进行加工,并返回一个新的数组
filter
循环并过滤数组,得到想要的内容
let arr = [1,2,3,4,5,6,7,8,9];
arr.filter((item,index)=>{
if(item % 2 == 0){ //偶数
return true //返回true(留下偶数)
}else{ //奇数
return false //返回false(去除奇数)
})
reduce
对数组进行整合,将数组中每一项通过加工成一个值
let arr = [1,2,3,4,5,6,7,8,9];
arr.reduce((pre,next,index)=>{
return pre + next; //数组相加得45
},0) //0为初始值
for…in
用于遍历对象,不适用于数组
let obj = {
name:"neinei",
age:10
}
for(let key in obj){}
for…of
遍历数组、数组对象、字符串等
const iterable = ['mini', 'mani', 'mo'];
for (const value of iterable) {
console.log(value);
}