【配列対応版公開中】JavaScriptでIsEmptyとIsNotEmptyを実装しよう

JavaScriptFirefox, Google Chrome, IE11, バリデーション, 共通部品

JavaScript

JavaScriptでIsEmptyを独自実装

IsEmpty とは、一般的にStringの空文字チェックを行う関数です。

 

ただ、この記事で取り上げるのは、

String Number Array Object などの全般について、

nullだったり、undefinedだったり、

キー無しオブジェクトだったり、

要素0のリストだったりの判定を行う関数です。

 

JavaScriptは型明記無しで動作する(せざるを得ない)ので、

Stringだけをターゲットに関数を作成するのはNGにしました。

必ず、入ってくるのが文字列という担保が取れているならOKです!

 

他言語(やフレームワーク)だと、IsEmpty関数を利用して、

判定するのでしょうが、JavaScriptだと無いのです。

という事で、部品化しておきたいところ。

 

部品は「汎用性」をモットーに作成するとして、

色々、組み込み過ぎて遅く・重くなるのは避けたい。(なんと、ワガママ!)

ベストプラクティスという訳ではありませんが、作ってみました。

動作確認ブラウザ:IE11、Firefox、Google Chrome

 

ソースコード

下準備:

下のコードをjsファイルに張り付ける。

他の個所からは、BaseUtil.IsEmpty(変数) で呼び出し可能です。

var BaseUtil;
(function (BaseUtil) {
    /**
     * IsEmpty
     * @param obj {any} - Target Object
     */
    BaseUtil.IsEmpty = function (obj) {
        if (obj === undefined || obj === null) {
            return true;
        }
        else if (Object.prototype.toString.call(obj).slice(8, -1) === "String") {
            if (obj === "") {
                return true;
            }
        }
        else if (Object.prototype.toString.call(obj).slice(8, -1) === "Array") {
            if (obj.length === 0) {
                return true;
            }
        }
        else if (Object.prototype.toString.call(obj).slice(8, -1) === "Object") {
            if (!Object.keys(obj).length) {
                return true;
            }
        }
        return false;
    };
    /**
     * IsNotEmpty
     * @param obj {any} - Target Object
     */
    BaseUtil.IsNotEmpty = function (obj) {
        return !BaseUtil.IsEmpty(obj);
    };
})(BaseUtil || (BaseUtil = {}));

最後に

String Number Array Object など全般的に上の部品で対応が可能です。

IsNotEmptyも用意しているので、

If文の中で「!」を付け忘れて、バグを生むような事も減るでしょう。

意外と気づけないんですよね。

!とかの1文字ミスって。

 

また、「BaseUtil」は自由に変更ください。

CommonUtilは、業務共通処理かな?と思ったので、

基盤系となる共通処理をBaseUtilにしています。

※保守性を考慮して、DateUtilやStringUtilなども有りだと思います。

スポンサーリンク