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

使い方

[javascript]

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

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

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

}

[/javascript]

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

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

IE8以前の互換性

[javascript]

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;
};
}

[/javascript]

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

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

jQueryにinArrayを使う場合

[javascript]

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

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

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

}

[/javascript]

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

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

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


この投稿へのコメント

コメントはありません。

コメントを残す

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL