La diferencia y conexión entre map y forEach
1. Los mismos puntos:
1. 都是循环遍历数组中的每一项
2. 每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)
3. 匿名函数中的this都是指向window
4. 只能遍历数组
2. Diferencias:
1. map()会分配内存空间存储新数组并返回,forEach()不会返回数据。
2. forEach()允许callback更改原始数组的元素。map()返回新的数组。
3. Escenario de uso:
1. forEach适合于你并不打算改变数据的时候。
2. map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)。
expandir
1. foreach()
¡No hay valor de retorno!
使用方法:
arr[].forEach(function(value,index,array){
xxxxx
})
-
Parámetros: el elemento actual en la matriz de valores, indexar el índice del elemento actual, la matriz original de la matriz;
-
Hay varios elementos en la matriz, por lo que la función de devolución de llamada anónima que se pasa debe ejecutarse varias veces;
-
En teoría, este método no tiene valor de retorno, simplemente atraviesa cada elemento de la matriz y no modifica la matriz original, pero usted mismo puede modificar la matriz original a través del índice de la matriz.
举个例子: var array = [1,3,5,9,7]; var res = array.forEach(function (item,index,input) { input[index] = item*10; }) console.log(res);//--> undefined; console.log(array);//--> 通过数组索引改变了原数组; [10,30,50,90,70]
2. mapa()
Si hay un valor de retorno, ¡puedes devolverlo!
使用方法:
arr[].map(function(value,index,array){
xxx
return xxx
});
- Parámetros: el elemento actual en la matriz de valores, el índice del elemento actual en el índice, la matriz original de la matriz;
- Diferencia: la función de devolución de llamada del mapa admite el valor de retorno devuelto. Lo que se devuelve es equivalente a cambiar este elemento en la matriz a qué (no afecta la matriz original, pero es equivalente a clonar la matriz original y clonar el el elemento correspondiente en la matriz de esta copia ha cambiado);
Por ejemplo:
var array = [1,3,5,7,9];
var res = array.map(function (item,index,input) {
return item*10;
})
console.log(res);//[10, 30, 50, 70, 90]
console.log(array);// [1, 3, 5, 7, 9] 不变