forEach与map循环有什么区别呢,又该如何使用呢,其实存在即必要,也不用管什么底层代码的写法,理解浅一点,因为map循环会开辟新的空间存储数据,理论会慢一点,但如果你真的需要时你即使使用forEach也会自己去开辟空间。
<script type="text/javascript"> let arr1=[1,2,3,4,5,6]; let data1 = arr1.forEach((data)=>{ return data*data }) let arr2=[1,2,3,4,5,6]; let data2 = arr2.map((data)=>{ return data*data }) console.log('------第一个区别,forEach没有return返回值,返回为undefined,map正常-------') console.log(data1) console.log(data2) // 看下数据有没有改变 let arr3=[1,2,3,4,5,6]; let data3 = arr3.forEach((data)=>{ data+='44' }) let arr4=[1,2,3,4,5,6]; let data4 = arr4.map((data)=>{ data+='55' }) console.log('------看下arr1 与 arr2数据发现没有被改变------') console.log(arr3) console.log(arr4) // map与forEach都有三个参数,分别是当前数据,索引值与当前循环的数组 let arr5=[1,2,3,4,5,6]; arr5.forEach((data,index,arr)=>{ arr[index]*=arr[index] }) let arr6=[1,2,3,4,5,6]; arr6.map((data,index,arr)=>{ arr[index]*=arr[index] }) console.log('------都改变了原始数据-------') console.log(arr5) console.log(arr6) // 当成普通for循环用是肯定没问题的 let arr7=[1,2,3,4,5,6]; let arr8=[1,2,3,4,5,6]; arr7.forEach((data,index,arr)=>{ arr7[index]*=arr7[index] }) arr8.forEach((data,index,arr)=>{ arr8[index]*=arr8[index] }) console.log('----------当成普通for循环使用---------') console.log(arr7) console.log(arr8) </script>
输出:
总结:
从以上例子可以看出map与forEach循环基本没有太大的区别,当然这是在不考虑底层实现原理的前提,其实我们也没有必要纠结这两个谁快谁慢,测试执行速度也没什么太大意义,因为我们要考虑这两种循环的设计初衷,存在既有必要,map循环就是比forEach多出了return值,也不用管底层怎么实现,如果需要在不改变原始数据并需要得出一个改变后的新数据,那么就用map,相反则forEach
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!