İçinde geri çağırma işlevi Array.map
vardır üç parametre:
Aynı itibaren Mozilla sayfasından size bağlı olduğunu:
geri çağrı üç bağımsız değişkenle çağrılır: öğenin değeri, öğenin dizini ve çapraz kullanılan Array nesnesi. "
Dolayısıyla, parseInt
aslında iki bağımsız değişken bekleyen bir işlev çağırırsanız , ikinci bağımsız değişken öğenin dizini olur.
Bu durumda, parseInt
sırayla 0, 1 ve 2 yarıçapı ile arama yaptınız . Birincisi parametreyi vermemekle aynıdır, bu nedenle girişe göre varsayılan olarak ayarlanmıştır (bu durumda taban 10). Taban 1, imkansız bir sayı tabanıdır ve 3, taban 2'deki geçerli bir sayı değildir:
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
Bu durumda, sarma işlevine ihtiyacınız var:
['1','2','3'].map(function(num) { return parseInt(num, 10); });
veya ES2015 + sözdizimi ile:
['1','2','3'].map(num => parseInt(num, 10));
(Her iki durumda da, gösterildiği gibi bir yarıçapı açıkça belirtmek en iyisidir parseInt
, aksi takdirde girdiye dayalı olarak yarıçapı tahmin eder. Bazı eski tarayıcılarda, önde gelen 0, sekizlik tahmin etmesine neden oldu, bu da sorunlu olma eğilimindeydi. dize ile başlıyorsa hex'i tahmin edin 0x
.)
.map(parseFloat)
çünkü bir parametre alır.