elemento - JavaScript Array#map: argumento de índice
map javascript (3)
A veces, el índice del elemento importa. Por ejemplo, este mapa reemplaza cada segundo elemento con 0:
var a = [1, 2, 3, 4, 5, 6];
var b = a.map(function(el, index) {
return index % 2 ? 0 : el;
});
console.log(b);
Salida:
[1, 0, 3, 0, 5, 0]
Mi pregunta es sobre el método de map
de matrices en JavaScript.
Puede pasarle una función que toma un segundo argumento, el índice del elemento actual de la matriz que se está procesando, pero ... ¿con qué propósito? ¿Qué sucede cuando lo haces y cuál es la diferencia cuando no?
¿Para qué usarías esta función?
Aquí hay una descripción de la función del map
:
arr.map(callback[, thisArg])
callback
Función que produce un elemento de la nueva matriz, tomando tres argumentos:
currentValue
El elemento actual que se procesa en la matriz.
index
El índice del elemento actual que se procesa en la matriz.
array
El mapa de la matriz fue llamado.
La función de mapa toma una función de devolución de llamada como argumento (y no un índice como argumento, como se indicó originalmente en la pregunta antes de que se editara). La función de devolución de llamada tiene un índice como parámetro: la devolución de llamada se invoca automáticamente, por lo que no proporciona el índice usted mismo. Si solo necesita el valor actual, puede omitir los otros parámetros.
El índice del elemento actual se pasa siempre a la función de devolución de llamada, la única diferencia es que si no lo declara en la función es que no puede acceder a él por su nombre.
Ejemplo:
[1,2,3].map(function(o, i){
console.log(i);
return 0;
});
[1,2,3].map(function(o){
console.log(arguments[1]); // it''s still there
return 0;
});
Salida:
0
1
2
0
1
2
Demostración: http://jsfiddle.net/Guffa/k4x5vfzj/