Funkcja oddzwaniania Array.mapma trzy parametry:
Z tej samej strony Mozilli , do której linkujesz:
wywołanie zwrotne jest wywoływane z trzema argumentami: wartością elementu, indeksem elementu i przemierzanym obiektem Array. "
Więc jeśli wywołasz funkcję, parseIntktóra faktycznie oczekuje dwóch argumentów, drugim argumentem będzie indeks elementu.
W tym przypadku zakończyłeś dzwonienie parseIntz radix 0, 1 i 2 z kolei. Pierwszy jest taki sam, jak brak podania parametru, więc domyślnie oparty na danych wejściowych (w tym przypadku podstawa 10). Baza 1 jest niemożliwą bazą liczb, a 3 nie jest prawidłową liczbą w bazie 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
W takim przypadku potrzebujesz funkcji otoki:
['1','2','3'].map(function(num) { return parseInt(num, 10); });
lub ze składnią ES2015 +:
['1','2','3'].map(num => parseInt(num, 10));
(W obu przypadkach najlepiej jest jawnie podać podstawkę, parseIntjak pokazano, ponieważ inaczej odgaduje podstawę na podstawie danych wejściowych. W niektórych starszych przeglądarkach wiodące 0 powodowało, że zgadł liczbę ósemkową, co zwykle było problematyczne. zgadnij hex, jeśli ciąg zaczyna się od 0x.)
.map(parseFloat)ponieważ zajmuje tylko jeden parametr.