JavaScriptの学習・参考リファレンス/ドキュメント

JavaScript、ECMAScriptの学習と参考メモ 入門~初心者~中級者~上級者を目指して

型の変換

JavaScriptでよく使う型の変換をまとめました。 文字列、数値、日付、ブール値の変換の仕方について解説します。

型の変換各種

数値⇒文字列

const number = 12345;

const numberString1 = String(number);
const numberString2 = 12345 + '';

文字列⇒数値

const numberString = '123.45';

const number1 = +numberString; // 123.45 空文字の場合はこの変換では0となる +'' => 0
const number2 = Number(numberString); // 123.45 空文字の場合はこの変換では0となる Number('') => 0
const number3 = Number.parseFloat(numberString); // 123.45 小数点値 空文字の場合はこの変換ではNaNとなる Number.parseFloat('') => NaN
const number4 = Number.parseInt(numberString); // 123 整数値 空文字の場合はこの変換ではNaNとなる Number.parseInt('') => NaN

String、Number ⇒ BigInt

const bigint1 = BigInt('123');
const bigint2 = BigInt(123);

BigInt ⇒ String

const bigint = BigInt("12345");
const bigintString1 = String(bigint);
const bigintString2 = bigint + '';

文字列 ⇒ 日時・日付

形式がyyyy-MM-ddの場合、以下のように変換を行える。

let date2020_0331 = new Date(Date.parse("2020-03-31")); // 2020/03/31 09:00:00 GMT+0900
let date2020_0331_1530_59 = new Date(Date.parse("2020-03-31T15:30:59")); // 2020/03/31 15:30:59 GMT+0900
let date2020_0331_1530_59Z = new Date(Date.parse("2020-03-31T15:30:59Z")); // 2020/04/01 00:30:59 GMT+0900
let date2020_0331_1530_59P0 = new Date(Date.parse("2020-03-31T15:30:59+00:00")); // 2020/04/01 00:30:59 GMT+0900
let date2020_0331_1530_59P9 = new Date(Date.parse("2020-03-31T15:30:59+09:00")); // 2020/03/31 15:30:59 GMT+0900
let date2020_0331_1530_59_123Z = new Date(Date.parse("2020-03-31T15:30:59.123Z")); // 2020/04/01 00:30:59.123 GMT+0900
let date2020_0331_1530_59_123P0 = new Date(Date.parse("2020-03-31T15:30:59.123+00:00")); // 2020/04/01 00:30:59.123 GMT+0900
let date2020_0331_1530_59_123P9 = new Date(Date.parse("2020-03-31T15:30:59.123+09:00")); // 2020/03/31 15:30:59.123 GMT+0900

スラッシュ区切りでyyyy/MM/ddのような形式の場合は次のように日付型に変換できる。

let yyyyMMdd = '2020/10/25';
let reg = /^(\d\d\d\d)\/(\d\d)\/(\d\d)$/
let result = reg.exec(yyyyMMdd);
let yyyyMMddDate = result === null ? null : new Date(result[1], +result[2] - 1, result[3]);

日時・日付 ⇒ 文字列

以下ではtoISOStringtoLocaleStringを使っていますが、文字列の変換にはget系の関数から数値を取得する方法もわかりやすいです。

let datetime = new Date(2020, 6, 1, 4, 30, 59,123); // 2020/07/01 04:30:59.123 GMT+0900

// "2020-06-30T19:30:59.123Z" (ISO8601形式)
console.log(datetime.toISOString());

// "2020/07/01"
console.log(datetime.toLocaleString('ja-JP',
  { year: 'numeric', month: '2-digit', day: '2-digit'}));
// "2020/07/01 04:30:59"
console.log(datetime.toLocaleString('ja-JP',
  { year: 'numeric', month: '2-digit', day: '2-digit', hour:'2-digit', minute:'2-digit', second:'2-digit'}));

// "令和02年7月01日水曜日"
console.log(datetime.toLocaleString('ja-JP-u-ca-japanese',
   { weekday: 'long', year: '2-digit', month: 'long', day: '2-digit'}));
// "令和02年7月01日水曜日 04時30分59秒 日本標準時"
console.log(datetime.toLocaleString('ja-JP-u-ca-japanese',
  { weekday: 'long', year: '2-digit', month: 'long', day: '2-digit', hour:'2-digit', minute:'2-digit', second:'2-digit', timeZoneName:'long' }));
// "令和02年7月01日水曜日 04:30:59"
console.log(datetime.toLocaleString('ja-JP-u-ca-japanese',
  { weekday: 'long', year: '2-digit', month: 'long', day: '2-digit', hour:'2-digit', minute:'2-digit', second:'2-digit' }));

// "水曜日"
console.log(datetime.toLocaleString('ja-JP', {weekday: 'long'}));
// "水"
console.log(datetime.toLocaleString('ja-JP', {weekday: 'short'}));
// "令和"
console.log(datetime.toLocaleString('ja-JP-u-ca-japanese', {era: 'long'}).substring(0,2));
// "R"
console.log(datetime.toLocaleString('ja-JP-u-ca-japanese', {era: 'narrow'}).substring(0,1));

各種型 ⇒ Boolean

!で任意の対象をBooleanに変換できる。 変換した値は「false, undefined, null, 0, NaN, ‘’」のみtrue、それ以外はfalseになる。
!!とすることで「false, undefined, null, 0, NaN, ‘’」のみfalse、それ以外trueとできる。

// !でtrueとなる対象は以下のみ
const falsyArray = [false, undefined, null, 0, NaN, ''];
for (let value of falsyArray){
  console.log(!value); // true
  console.log(!!value); // false
}

// 上記以外はfalseとなる
const truthyArray = [true, {}, [], 1, 'false', new Date()]
for (let value of truthyArray){
  console.log(!value); // false
  console.log(!!value); // true
}

Booleanでも変換できる。

const falsyArray = [false, undefined, null, 0, NaN, ''];
for (let value of falsyArray){
  console.log(Boolean(value)); // false
}

const truthyArray = [true, {}, [], 1, 'false', new Date()]
for (let value of truthyArray){
  console.log(Boolean(value)); // true
}
作成日 : 2020年06月17日