-
相同点
1.都是遍历数组的。
2.对空数组不会调用回调函数。
3.不会改变原数组(某些情况下可改变)
-
map
map有返回值
const arr = ['1', '2', '3'];
const fun = (item, index, arr) => {
console.log(`${index}: ${Number(item)} / ${arr}`);
};
arr.map(fun);
0: 1 / 1,2,3
1: 2 / 1,2,3
2: 3 / 1,2,3
[undefined, undefined, undefined]
var arr1 = arr.map((item)=>{
return item=item*2
})
console.log(arr)
console.log(arr1)
<---第一种--->
let arr = [1,2,3]
let arr1 = arr.map((item,index,arr)=>{
return arr[index] = 4
})
console.log(arr)
console.log(arr1)
<---第二种--->
let list = [{name:"tom",age:"24"},{name:"lisa",age:"28"}]
let list1 = list.map( item =>{
return item.name = 'jok'
})
console.log(list)
console.log(list1)
-
forEach
forEach没有返回值
//不改变原数组情况
var a=[1,2,3,4,5]
var b=a.forEach((item)=>{
item=item*2
})
console.log(b)//undefined
a.forEach(item=>{
item = item*2
})
console.log(a)//[1,2,3,4,5]
//改变原数组情况
<---第一种--->
let arr = [1,2,3]
arr.forEach((item,index,arr)=>{
return arr[index] = 4
})
console.log(arr) // [4,4,4]
<---第二种--->
let list = [{name:"tom",age:"24"},{name:"lisa",age:"28"}]
list.forEach( item =>{
return item.name = 'jok'
})
console.log(list)//[{name:"jok",age:"24"},{name:"jok",age:"28"}]
-
总结
这里就要引入栈(stack)内存和堆(heap)内存的概念了,如
String,Number,Boolean,Undefined,Null是存在于栈内存中的,
在栈内存中储存变量名及相应的值。Object,Array,Function存在于堆内存中,
在堆内存中储存变量名及引用位置。
参考地址https://www.cnblogs.com/maibao666/p/13802716.html