Mach3.laBlog

細かすぎて伝わらないjQuery拡張 (5) “$.dig” – Advent Calendar 2016

この記事は賞味期限切れです。(更新から1年が経過しています)

$.dig() は、ドットシンタックスの文字列を渡すとそのオブジェクトを掘り起こして返してくれる関数です。

$.dig(path, object)

使い方

var obj = {
    foo: {
        bar: {
            baz: "hoge"
        }
    }
};

$.dig("obj.foo.bar.baz"); // => "hoge"
$.dig("foo.bar.baz", obj); // => "hoge"
$.dig("hoge.fuga", obj); // => undefined
  • 第二引数で検索のスタート地点を指定できます(デフォルトはwindow)
  • 存在しないプロパティであった場合は undefined を返します

コード

$.dig = function(path, obj){
    var o;
    obj = (obj === void 0) ? window : obj;
    o = obj;
    path.split(".").forEach(function(name){
        if(o === void 0){ return; }
        if(! (name in o)){
            return o = void 0;
        }
        o = o[name];
    });
    return o;
};

通常存在しないプロパティを参照しようとすると Uncaught Reference Error が投げられるので、 事前に検証できるように書いた覚えがあります。 PHPでも似たような物を書きましたが、そちらは単にドットシンタックスで掘りたかったからでした。

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*