erwarte ich bin nur zu lernen, wie JS verwenden Funktionen höherer Ordnung (Karte, forEach, reduzieren, usw.) und haben in Verwirrung gestolpert. Ich versuche eine einfache 'Range'-Funktion zu schreiben, kann aber mein Ausgabe-Array nicht füllen. Dies ist das Ziel:forEach auf einem neuen Array 'tun, ist nicht das, was ich
range(1, 4) // [1, 2, 3, 4]
ich diese bekommen:
[undefined × 4]
Hier ist mein Code:
function range(num1, num2) {
var rangeArr = new Array((num2 + 1) - num1);
return rangeArr.map(function(e, i, arr) {return arr[i] = num1 + i});
}
Was ich hier fehlt? Soweit ich das beurteilen kann, scheint das Problem etwas damit zu tun zu haben, wie ich 'neues Array' benutze, aber darüber hinaus bin ich verloren.
Oh, und hier ist der Teil, der mich wirklich verwirrt. Dies funktioniert gut:
function bleck() {
var blah = [1, 2, 3, 4];
var x = 'wtf';
return blah.map(function(e, i, arr) {return arr[i] = x})
}
["wtf", "wtf", "wtf", "wtf"]
Dank !!
Ich glaube nicht, dass Sie "(num2 + 1) - num1)" brauchen, da Javascript dynamische Arrays verwendet. – Serdnad
@Serdnad Es ist nicht notwendig, aber es erstellt ein leeres Array dieser Länge: 'Array (4) = [undefined x 4]' – cincodenada
Hinweis zur Verwendung von '.map()', die nicht auf Ihr Problem bezogen ist: in Ihr Callback ist nicht nötig, um 'return arr [i] = num1 + i' zu haben, Sie können einfach' return num1 + i; 'sagen. Es gibt keinen Grund, die Werte in 'arr' zu setzen - das ist das gleiche Array wie 'rangeArr' - weil 'map' ein neues Array erstellt und das ist, was Sie von Ihrer' range() 'Funktion zurückgeben. – nnnnnn