JavaScript の Array クラスを拡張してオブジェクトが含まれているか検索する

配列の中に要素が含まれているか検索したい時に、

var sample = ["foo", "bar"];
if ("bar" in sample)
    ... 

みたいな使い方をしたかったんだけど、
if-in はオブジェクトのプロパティ検索には使えても配列には使えないので、
Array クラスを拡張してみた。

/**
 * 配列にオブジェクトが含まれているか検索する
 *
 * @param {Object} オブジェクト
 * @return boolean 含まれていれば true
 *
 * @example
 * >>> var test = [1, 2, [3, 4], {foo: "bar"}, [5, 6]];
 * >>> test.contains([3, 4]);
 * true
 * >>> test.contains([1, 2]);
 * false
 * >>> test.contains({foo: "bar"});
 * true
 */
Array.prototype.contains = function(value) {
    for (var i in this)
        if (this.hasOwnProperty(i) && this[i].toString() === value.toString())
            return true;
    return false;
};
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中