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

HTML5のdata-*属性の型キャスト解説:文字列と数値の扱い方

data-*属性は常に文字列として返される

HTML5のカスタムdata-*属性に格納した値は、数値に見えていても、JavaScriptのdatasetインターフェース経由で取得すると必ず文字列型(string)になります。これはHTMLの仕様上、すべての属性値が文字列として保存されるためです。

属性値の型を確認するコード例

たとえば、次のようなdata-*属性が定義されているとします。

<a data-value="6.0">6.0</a>
<a data-value="6.5">6.5</a>

これらの値の型を確認するには、querySelectorAllで要素を取得し、typeof演算子でチェックします。

[...document.querySelectorAll("a")].forEach(a =>
  console.log("type: %s, value: %o", typeof a.dataset.value, a.dataset.value)
);

実行結果は次のようになり、どちらの値も文字列型として扱われていることが分かります。

type: string, value: '6.0'
type: string, value: '6.5'

文字列を数値に変換(キャスト)する方法

取得した値を数値として計算に使いたい場合は、明示的に型変換を行う必要があります。代表的な方法は以下の3つです。

1. Number()を使う

const num = Number(a.dataset.value); // 6 や 6.5 という数値になる

2. parseFloat()を使う

const num = parseFloat(a.dataset.value); // 小数を含む値も安全に変換できる

3. 単項プラス(+)演算子を使う

const num = +a.dataset.value; // 簡潔に記述できる

注意点

Number("6.0")の実行結果は6となり、小数点以下の「.0」は失われます。表示形式まで正確に保持したい場合は、値を文字列のまま管理し、計算を行うタイミングでのみ数値へ変換するのが安全です。

また、数値に変換できない文字列をNumber()に渡すとNaNが返されるため、isNaN()などで事前にバリデーションを行うことで、予期しないエラーを防ぐことができます。

  1. JavaScriptの型キャスト(型変換)とは?String・Number・Booleanの使い方を解説

    型キャスト(型変換)とは?型キャストとは、あるデータ型を別のデータ型へ明示的に変換することを指します。JavaScriptでは、以下の3つの関数を使った変換が最も一般的です。String() … 文字列型へ変換Boolean() … 真偽値型へ変換Number() … 数値型へ変換それぞれの関数に値を渡すだけで、簡単に目的の型へ変換できるのが特徴です。JavaScriptで型キャストを行うコード例以下は、JavaScriptで型キャストを行うサンプルコードです。ボタンをクリックすると、値「44」が文字列・数値・真偽値へそれぞれ変換され、結果が画面に表示されます。<!DOCTYPE htm

  2. JavaScriptで数値を丸める・切り捨てる方法|Math.round()とMath.trunc()の違いと使い方

    JavaScriptには、小数を整数へ変換するためのメソッドとして、Math.round() と Math.trunc() の2つが標準で用意されています。Math.round():小数点以下を四捨五入し、最も近い整数に丸めます。例えば「3.5」は「4」に、「3.4」は「3」になります。Math.trunc():小数点以下を単純に取り除き、整数部分だけを残します。「3.9」も「3.1」もどちらも「3」になります。それぞれの特徴を踏まえながら、実際のコード例を見ていきましょう。Math.round() と Math.trunc() の違いメソッド動作例(3.999)Math.round()四捨五