2020年03月28日

JavaScript 数値操作の基本

Numberオブジェクト、Mathオブジェクトの使用例
// JavaScript 数値操作の基本

with(console) {
var val = '123.456789';
log(Number.parseInt(val)); // [ES2015] 文字列を小数点数に変換
log(Number.parseFloat(val)); // [ES2015] 文字列を整数に変換

val = Number.parseFloat(val);
log(val.toFixed(2)); // 指定した小数点第n位に四捨五入

var res = 0/0;
log(Number.isNaN(res)); // [ES2015] NaN(Not a Number)かを判定

// 定数
log(Number.MAX_VALUE); // Numberで表せる最大の値
log(Number.MIN_VALUE); // Numberで表せる最小の値
log(Number.NEGATIVE_INFINITY); // 負の無限大 = -Infinity
log(Number.POSITIVE_INFINITY); // 正の無限大 = Infinity

// 数学演算
log(Math.abs(-50)); // 絶対値 50
log(Math.max(-5, 10, 32)); // 最大値 -5
log(Math.min(-5, 10, 32)); // 最小値 32
log(Math.pow(3, 2)); // べき乗 = 9

var num = '123.456789';
log(Math.ceil(num)); // 小数点以下の切り上げ(num以上の最小の整数)
log(Math.floor(num)); // 小数点以下の切り下げ(num以下の最大の整数)
log(Math.round(num)); // 四捨五入
log(Math.trunc(num)); // [ES2015] 整数部分を取得
}
タグ:JavaScript
posted by Hiro at 23:58| Comment(0) | プログラム

JavaScript 文字列操作の基本、基数変換

Stringオブジェクトの使用例
// JavaScript 文字列操作の基本

with (console) {
var myStr1 = "新しい朝が来た希望の朝だ";

// 検索 (位置を返すメソッドは、見つからない場合は-1を返す)
log('----- 検索 -----');
log(myStr1.indexOf('朝', 5)); // 先頭6文字目から「朝」を検索 = 10
log(myStr1.lastIndexOf('い', 2)); // 終端3文字目から「朝」を検索 = 3 (※startは左からの文字数)
log(myStr1.startsWith('新しい', 0)); // [ES2015] 文字列の先頭が「新しい」で始まるか = true
log(myStr1.endsWith('朝だ', 12)); // [ES2015] 文字列の終端が「朝だ」で終わるか = true
log(myStr1.includes('来た', 0)); // [ES2015] 文字列に「来た」が含まれるか = true

// 部分文字列
log('----- 部分文字列 -----');
log(myStr1.charAt(5)); // 指定位置の文字を返す = 「来」
log(myStr1.slice(5, 7)); // 開始位置から終了位置前までの文字列を返す =「来た」
log(myStr1.slice(5, -1)); // 開始位置から終端から数えて1文字までの文字列を返す =「来た希望の朝」
log(myStr1.slice(-5)); // 終端から数えて5文字の文字列を返す =「希望の朝だ」
log(myStr1.substring(5, 7)); // 開始位置から終了位置前までの文字列を返す =「来た」
//log(myStr1.substr(5, 4)); // (非推奨)
log(myStr1.split('朝', 100)); // 文字列で分割する(最大100分割) = ["新しい", "が来た希望の", "だ"]

// 大文字/小文字変換
log('----- 大文字/小文字変換 -----');
var myStr2 = "A new morning has come, it's a morning of hopes"; // '
log(myStr2.toLowerCase()) // すべての文字を小文字に変換
log(myStr2.toUpperCase()) // すべての文字を大文字に変換

// コード変換
log('----- コード変換 -----');
log(myStr2.charCodeAt(0)) // 指定文字をLatin-1コードに変換 = 65
log(String.fromCharCode(0x50, 0x51, 0x52)) // 指定Latin-1コードを文字に変換 = PQR

log(myStr1.codePointAt(0)) // [ES2015] 指定文字をUTF-16エンコードしたコードポイント値に変換 = 26032
log(String.fromCodePoint(0x671D)) // [ES2015] 指定のコードポイント値を文字列に変換 = 「朝」

//その他
log('----- その他 -----');
log(myStr1.concat(myStr2)); // 文字列の結合
log(myStr1.repeat(2)); // [ES2015] 文字列を指定回数繰り返す
log((myStr1 + " ").trim() + "★"); // 文字列から空白文字を除去(全角スペースも除去)
log(myStr1.length); // 文字列の長さを取得 = 12
}
基数変換
// 2進数→16進数
var val1_base02 = '0011101101';
var val1_base16 = parseInt(val1_base02, 2).toString(16);
var dig1 = 4; // 桁
var res1 = '0x' + ('0'.repeat(dig1) + val1_base16).slice(-dig1);
console.log(res1);

// 16進数→2進数
var val2_base16 = '285d';
var val2_base02 = parseInt(val2_base16, 16).toString(2);
var dig2 = 16; // 桁
var res2 = '0b' + ('0'.repeat(dig2) + val2_base02).slice(-dig2);
console.log(res2);
タグ:JavaScript
posted by Hiro at 23:21| Comment(0) | プログラム

JavaScriptのモジュールパターン

JavaScriptのモジュールパターン使用例。
クロージャの仕組みによりオブジェクトをカプセル化します。
/* script/myscript_modulepattern.js */

/* JavaScriptのモジュールパターン */

// 即時実行関数式(IIFE)により、代入と同時に関数を実行する。
// funcにはreturnの返すオブジェクトが入る。
// 関数実行後もクロージャによりnumの値は保持する。
// 関数の外からはnumにアクセスできず、結果としてカプセル化を実現する。
var func = (function() {
var num;
return {
set: function(n){
num = n;
},
add: function(){
num++;
},
show: function(){
console.log(num);
}
}
})();

func.set(50);
func.add();
func.add();
func.show(); // 52

タグ:JavaScript
posted by Hiro at 00:02| Comment(0) | プログラム