Die Rückruffunktion in Array.maphat drei Parameter:
Von derselben Mozilla-Seite , auf die Sie verlinkt haben:
Der Rückruf wird mit drei Argumenten aufgerufen: dem Wert des Elements, dem Index des Elements und dem Array-Objekt, das durchlaufen wird. "
Wenn Sie also eine Funktion aufrufen, parseIntdie tatsächlich zwei Argumente erwartet , ist das zweite Argument der Index des Elements.
In diesem Fall haben Sie parseIntnacheinander mit Radix 0, 1 und 2 angerufen . Der erste ist derselbe, als würde der Parameter nicht angegeben, daher wird er standardmäßig basierend auf der Eingabe (in diesem Fall Basis 10) verwendet. Basis 1 ist eine unmögliche Zahlenbasis und 3 ist keine gültige Zahl in Basis 2:
parseInt('1', 0); // OK - gives 1
parseInt('2', 1); // FAIL - 1 isn't a legal radix
parseInt('3', 2); // FAIL - 3 isn't legal in base 2
In diesem Fall benötigen Sie also die Wrapper-Funktion:
['1','2','3'].map(function(num) { return parseInt(num, 10); });
oder mit ES2015 + Syntax:
['1','2','3'].map(num => parseInt(num, 10));
(In beiden Fällen ist es am besten, einen Radix wie gezeigt explizit anzugeben parseInt, da er sonst den Radix basierend auf der Eingabe errät. In einigen älteren Browsern führte eine führende 0 dazu, dass er ein Oktal erraten hat, was tendenziell problematisch war rate hex, wenn die Zeichenfolge mit beginnt 0x.)
.map(parseFloat)Lazys : Verwenden Sie diese Option, da nur ein Parameter erforderlich ist.