2011-12-21 43 views
5
console.log("1,2,3".split(",").map(parseInt)) 

drukujemapa + parseInt - dziwne wyniki

[1, NaN, NaN] 

dlaczego?

Dodanie tutaj niepotrzebnego tekstu, aby sprawić, by pytanie to "spełniało standardy jakości SO", cokolwiek to znaczy.

Odpowiedz

2

Jest to omówione w wiele szczegółów tutaj: http://www.wirfs-brock.com/allen/posts/166. Proponowane rozwiązania tego problemu, a także oczywiste

a.map(function(e) { return parseInt(e, 10)}) 

obejmują także konstruktora Numer:

a.map(Number) 

lub roztworu na podstawie częściowego zastosowania (http://msdn.microsoft.com/en-us/scriptjunkie/gg575560 dłużej)

Function.prototype.partial = function(/*args*/) { 
    var a = [].slice.call(arguments, 0), f = this; 
    return function() { 
     var b = [].slice.call(arguments, 0); 
     return f.apply(this, a.map(function(e) { 
      return e === undefined ? b.shift() : e; 
     })); 
    } 
}; 

["1", "2", "08"].map(parseInt.partial(undefined, 10)) 
8

.map rozmowy parseInt() z dwa parametrami - wartość, a indeks tablicy:

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 
+0

Dzięki! Jeszcze jeden skrypt javascript. – georg

+1

to tylko garstka, jeśli nie czytasz instrukcji ... – Alnitak

+1

udokumentowane grozę, czyli zachowanie sprzeczne z intuicją, wciąż jest problemem. Czytanie: http://www.wirfs-brock.com/allen/posts/166 – georg

3

.map wywołania parseInt() z trzema parametrami - wartością, indeksem tablicy i całą instancją tablicy.

Powiązane problemy