成对使用console.time()和console.timeEnd()比较for 和 forEach谁消耗的时间短:
let obj={
name:'Lucy',
age:18,
gender:'Female'
};
let obj2={
name:'Luke',
age:18,
gender:'Male'
}
let arr=[];
for(let i=0;i<100;i++){//修改arr的长度
arr.push(obj);
}
arr.push(obj2);
console.log(arr);
console.time('time1');
let arr3=[];
for(let i=0;i<arr.length;i++){
if(arr[i].name==obj2.name){
arr3.push(arr[i])
}
}
console.log(arr3);
console.timeEnd('time1');
console.time('time2');
let arr4=[];
arr.forEach(item=>{
if(item.name==obj2.name){
arr4.push(item)
}
})
console.log(arr4);
console.timeEnd('time2');
结果是:
for比forEach消耗的时间短。同时for循环可以使用break跳出循环(双层for循环,内层的break跳出内层循环,外层的break跳出外层循环),forEach只能采用throw Error(); 跳出循环。
try {
arr.forEach(item => {
if(){
throw Error(); //跳出循环
}
})
} catch (error) {
// 由于没有错误需要抛出,所以catch里面不用写东西
}