JavaScriptではmap()関数で文字列を整数にします.

912 ワード

JavaScriptの高次関数を勉強する時、map()関数に関する問題が発生しました.実際の操作では、下記のコードは予想外の結果を出力しました.
'use strict';
var arr = ['1', '2', '3'];
var r;
r = arr.map(parseInt);
alert('[' + r[0] + ', ' + r[1] + ', ' + r[2] + ']');
結果は[1,NaN,NaN]です.Aray.prototype.map()の文書を見て、map()関数の作用メカニズムを深く理解しました.map()受信のコールバック関数は3つのパラメータがあります.calback(current Value,index,array)は、通常、最初のパラメータだけを必要として、着信後の2つのパラメータを無視しました.不幸なことに、PArseInt(string、radix)は第二のパラメータを無視していません.実際に実行される関数はそれぞれです.
  • パースInt('0',0)/.0を10進数で変換する
  • parseInt('1',1)/.NaN、一進法がない
  • parseInt('2',2)NaN、バイナリ変換では2
  • の出現は許可されていません.
    r=arr.mapに変更できます.Number関数は一つのパラメータしか受信しないからです.あるいは、次のコードを使って、パーrseInt()の変換問題を解決します.
    var arr = ['1','2','3'];
    var r = arr.map(function(val){
        return parseInt(val);
    });
    console.log(r);