javascriptで配列の中に指定した文字列が含まれているか判別する方法


pythonでいうところのin

Rubyでいうところのinclude?

PHPでいうところのin_array

のようなことをjavascriptでやろうと思ったら、javascript1.6以降から「some」メソッドというのがArrayオブジェクトに実装されてるっぽい。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/some

使い方


var list = ['DDT', 'ドラゴン・ラナ', 'ボマイエ'];

if (list.some(function(v) { return v === 'ボマイエ'; }) === true) {

  document.write('ボマイエっ!!!');

}

ちなみにIE8以前は対応していない模様。

その場合はMDNにあるようにArrayにsomeメソッドを足しておくと互換性が保てる

IE8以前の互換性


if (!Array.prototype.some) {
  Array.prototype.some = function(fun /*, thisp */) {
    "use strict";

    if (this == null) throw new TypeError();

    var t = Object(this),
        len = t.length >>> 0;

    if (typeof fun != "function") throw new TypeError();

    var thisp = arguments[1];

    for (var i = 0; i < len; i++) {
      if (i in t && fun.call(thisp, t[i], i, t))
        return true;
    }

    return false;
  };
}

というかjQueryにもinArrayっていうのがあるっぽい…

jQueryを使っているときはinArray使ってもいいかも

jQueryにinArrayを使う場合


var list = ['DDT', 'ドラゴン・ラナ', 'ボマイエ'];

if ($.inArray('ボマイエ', list) !== -1) {

  document.write('ボマイエっ!!!!!!');

}

jQueryのinArrayは指定する値が見つかった箇所のindex番号を返すようになっているので、見つからなかった場合は「-1」が返ってくる。

上の場合inArrayの返り値には「2」という値が返ってくる。

結構使用頻度は高いと思うから覚えておいて損はないと思う。

コメントを残す

メールアドレスが公開されることはありません。