香川県観音寺市でシステム開発

javascriptのスニペットいろいろ

javascriptでたまに必要になるよく使うコードを置いてます。

主に自分用です。
どこでも誰でも使えるものもあれば私(の環境)しか使えないものもあります。

三項演算子とかワンライナーで書けそうなところも、可読性と再利用性を優先してます。

スニペットとは「分かっている人が楽をするためのツール」です。
分からない人がコピペするためのものではありません。
コードの意味を理解してご利用ください。

数値文字列を数値にする

PHPの json_encode() で出力されたデータを受け取ったときに、数値も文字列型で渡されてくるので、数値は数値型に変換します。
ちなみに JSON_NUMERIC_CHECK は意図しないところまで数値にされてしまうので扱いづらいです。

console.log(json);

// 数値文字列を数値にする
// まだ使い込んでいないので変更するかもです
// 頭が 0 から始まる整数は変換しません
// カンマ区切りは変換しません
(function(){
    var f = function(a){

        // 配列でない
        if ('array' !== Object.prototype.toString.call(a).slice(8, -1).toLowerCase()) {

            // オブジェクトでない
            if ('object' !== Object.prototype.toString.call(a).slice(8, -1).toLowerCase()) {
                return a;
            }
        }

        for(var i in a) {

            // 文字列の時
            if ('string' == Object.prototype.toString.call(a[i]).slice(8, -1).toLowerCase()) {
                if (a[i] === '0') {
                    a[i] = 0;
                } else if (a[i].match(/^[1-9][0-9]*?$/)) {
                    a[i] = parseInt(a[i], 10);
                } else if (a[i].match(/^([1-9][0-9]*|0)\.[0-9]+$/)) {
                    a[i] = parseFloat(a[i], 10);
                }
            } else {
                a[i] = f(a[i]);
            }
        }

        return a;
    };
    json = f(json);
})();

console.log(json);

広告