forEach()
首先,了解forEach()的参数是一个回调函数,该函数有三个参数
由上图可知:这三个参数item为数组的元素值,index为数组的下标,arr是数组本身
我们可以发现,forEach并不影响原数组,并且不会返回执行结果,接下来让我们来看看map
map()
map在写法上和forEach类似,参数所代表的含义也一样,接下来我们使用同样的代码,再运行一遍,只将forEach改为map
<script>
var arr = [1, 2, 3, 8, 2, 1]
var list = arr.map((item, index, arr) => {
return item * 2
})
console.log(arr)
console.log(list)
</script>
由上图可知,map不影响原数组,会分配内存空间用来存储新数组并返回
map的结果是 执行函数返回的结果:
<script>
var arr=[1,4,2,11,6]
let result=arr.map((item)=>item>4)
console.log(result) //[false, false, false, true, true]
</script>
总结
相同点:map和forEach都不会影响原数组;它们的写法极为相似,回调函数的参数也是相同的。
不同点:map分配内存空间存储新数组,并且返回,forEach不会返回执行结果,返回的是undefined
大多数情况下,forEach用的都比较多,那map的使用场景是什么样子的呢?
在实战中服务器返回的数据,我们可能需要收集整合成一个对象,向服务器发请求,例如我们在修改一个表单数据的时候,点击保存,就要将我们整合的数据发送给服务器。为什么我们要重新整合数据才发给服务器?由于向服务器发送请求时,携带的参数格式是有要求的,我们需要整合起来符合携带参数的要求,此时我们就需要用到了“映射”