2014-10-14 5 views
47

Meine Frage ist über die map Methode von Arrays in JavaScript.JavaScript Array # Karte: Index Argument

Sie können es übergeben eine Funktion, die ein zweites Argument, den Index des aktuellen Elements des Array verarbeitet wird, aber ... zu welchem ​​Zweck? Was passiert, wenn Sie es tun und was ist der Unterschied, wenn Sie es nicht tun?

Wofür würden Sie diese Funktion verwenden? Hier

+0

auf der Karte bedeuten Sie JavaScript-Objekt? Denken Sie ein Beispiel? – Steve

Antwort

89

Der Index des aktuellen Elements wird immer an die Callback-Funktion übergeben, den einzigen Unterschied, wenn Sie dies nicht tun Erklären Sie es in der Funktion ist, dass Sie nicht auf den Namen zugreifen können.

Beispiel:

[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; 
}); 

Ausgang:

0 
1 
2 
0 
1 
2 

Demo: http://jsfiddle.net/Guffa/k4x5vfzj/

6

ist eine Beschreibung der map Funktion:

arr.map(callback[, thisArg]) 

callback
Funktion, die ein Element des neuen Array erzeugt, wobei drei Argumente:

currentValue
Die aktuelles Element, das im Array verarbeitet wird.

index
Der Index des aktuellen Elements, das im Array verarbeitet wird.

array
Die Array-Map wurde aufgerufen.

Die Map-Funktion nimmt eine Callback-Funktion als Argument (und nicht einen Index als Argument, wie ursprünglich in der Frage angegeben, bevor es bearbeitet wurde). Die Callback-Funktion hat einen Index als Parameter - der Callback wird automatisch aufgerufen, so dass Sie den Index nicht selbst bereitstellen. Wenn Sie nur den aktuellen Wert benötigen, können Sie die anderen Parameter weglassen.

12

Manchmal ist der Index des Elements wichtig. Zum Beispiel, ersetzt diese Karte jedes zweites Element mit 0:

var a = [1, 2, 3, 4, 5, 6]; 
var b = a.map(function(el, index) { 
    return index % 2 ? 0 : el; 
}); 
console.log(b); 

Ausgang:

[1, 0, 3, 0, 5, 0]