2016-07-30 3 views
1
(['1','2','3']).map(n => parseInt(n)); 

[1,2,3]なぜ `(['1'、 '2'、 '3'])map(parseInt)`が正しい結果を得ることができませんか?</p> <pre><code>(['1','2','3']).map(parseInt); </code></pre> <p>戻り<code>[1, NaN, NaN]</code>:戻ります

が、結果を期待しています。

どこが間違っていますか?

+0

@NagaSaiA - 'z' – Rayon

+0

は常に予期しない動作を回避するためにmap''の明示的なバージョンを使用した結果を確認します。 '[...]マップ(X => F(X )) ')。 – ftor

答えて

2

Array#mapコールバックには3つの引数があり、2番目の引数はindexで、この結果を引き起こしています。 functioncallbackとして渡されても、この引数はその関数のパラメータとして渡されます。 parseIntため

第二引数は、したがってparseInt('2',1)parseInt('3',2)radixあるNaN

実行フローはなります次のとおりです。

console.log((['1', '2', '3']).map(function(currenValue, index, array) { 
 
    return parseInt(currenValue, index, array); 
 
}));

私はNumber

で行くことにあなたを提案します

console.log((['1', '2', '3']).map(Number));

関連する問題