Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

Array.map(Number)が空のスペースをゼロに変換するのはなぜですか? JavaScript


次のコードと出力が与えられ、JavaScriptが空の文字列( "")を0に変換する理由を理解する必要があるとします-

const digify = (str) => {
   const parsedStr = [...str].map(Number)
   return parsedStr;
}
console.log(digify("778 858 7577"))

出力

[
7, 7, 8, 0, 8,
5, 8, 0, 7, 5,
7, 7
]

この動作は、特に文字列に0が含まれている場合に、非常に厄介になる可能性があります

これが実際に発生するのは、map()関数内で、Numberを使用して各文字を同等の数値に変換するときに、厳密な等式比較(===)ではなくAbstractEquality比較(==)を実際に使用するためです。 '==0はtrueを生成するため、各スペースは0に変換されます。

この不条理な振る舞いを防ぐために、map()関数を次のように微調整することができます-

const sin = (str) => {
   const parsedStr = [...str].map(i => parseInt(i, 10))
   return parsedStr;
}
console.log(sin("778 858 7577"))

したがって、スペースに遭遇すると、それはNaNに変換され、より論理的な動作になります。

出力

[
7, 7, 8, NaN, 8,
5, 8, NaN, 7, 5,
7, 7
]

  1. JavaScriptで配列をセットに変換する方法は?

    以下は、JavaScriptで配列を設定に変換するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> body

  2. JavaScriptで配列を空にする方法の数

    JavaScriptで配列を空にするには、4つの方法があります- 新しいアレイへの設定 −これでは、配列変数を新しい空の配列に設定します。 長さプロパティの使用 −これでは、配列の長さプロパティを0に設定します。 ポップの使用 −これでは、長さが0に達するまで配列要素を連続的にポップします。 スプライスの使用 −ここでは、開始インデックスを0とし、削除する要素の数をarray.length-1とします。 以下は、noを表示するコードです。 JavaScriptで配列を空にする方法の例- 例 <!DOCTYPE html> <html lang="en"