型の変換
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]);
日時・日付 ⇒ 文字列
以下ではtoISOString
やtoLocaleString
を使っていますが、文字列の変換には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
}