11

これはすべて、より大きなプログラムのコンテキストにあるため、問題のある行のみを表示して、単純に保つようにします。「84」、「32」などの文字列形式の数値である値の配列があります。

しかし、この行

console.log(unsolved.length + " " + unsolved[0] + " " + parseInt(unsolved[0]) + " " + parseInt("84"));

プリント:

4 "84" NaN 84

「84」は、解析しようとしている配列要素Imです。それでも、配列のコンテキストから取り出して明示的に記述しない限り、機能しません。どうしたの?

4

4 に答える 4

11

この関数を使用して、処理する文字列から引用符を削除してみてください。

function stripAlphaChars(source) { 
  var out = source.replace(/[^0-9]/g, ''); 

  return out; 
}

また、基数 10 の数値を解析することを明示的に指定する必要があります。

parseInt(unsolved[0], 10);
于 2012-06-20T13:47:20.367 に答える
7

parseIntは、数値のように見える引数の先頭からすべてを取得し、残りを無視します。あなたの場合、あなたがそれを呼び出す引数は で始まる"ので、数字のようには見えず、実際には数字ではない空の文字列をキャストしようとします。

于 2012-06-20T13:47:07.837 に答える
3

配列要素が実際に数値に解析できる文字列であることを確認する必要があります。配列要素には value が含まれていませんが、'84'実際には value '"84"'(" でカプセル化された数値を含む文字列)

"次のように、配列要素からを削除する必要があります。

function removeQuotationMarks(string) {
  return (typeof string === 'string') ? string.replace(/"|'/g, '') : string;
}

unsolved = unsolved.map(removeQuotationMarks);

これで、すべての配列要素を解析する準備が整いましたparseInt(unsolved[x], 10)

于 2012-06-20T13:55:46.850 に答える