"specialword"
が配列に含まれているかどうかを検出する方法を教えてもらえますか?例:
categories: [
"specialword"
"Word1"
"Word2"
]
本当にjQueryは必要ありません。
var myarr = ["I", "like", "turtles"];
var arraycontainsturtles = (myarr.indexOf("turtles") > -1);
ヒント :indexOfは、指定された検索値が最初に出現する位置を表す数値を返します。出現しない場合は-1を返します。
または
function arrayContains(needle, arrhaystack)
{
return (arrhaystack.indexOf(needle) > -1);
}
array.indexOf(..)
は IE <9 ではサポートされていませんが、jQueryのindexOf(...)
関数はそれらの古いバージョンでも動作します。
jQueryが提供する $.inArray
:
InArrayは見つかった要素のインデックスを返すため、0
は要素が配列の最初であることを示していることに注意してください。 -1
は、要素が見つからなかったことを示します。
var categoriesPresent = ['Word', 'Word', 'specialword', 'Word'];
var categoriesNotPresent = ['Word', 'Word', 'Word'];
var foundPresent = $.inArray('specialword', categoriesPresent) > -1;
var foundNotPresent = $.inArray('specialword', categoriesNotPresent) > -1;
console.log(foundPresent, foundNotPresent); // true false
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
3.5年後に編集
$.inArray
は事実上、それをサポートするブラウザー(最近ではほとんどすべて)でのArray.prototype.indexOf
のラッパーですが、サポートしないものではシムを提供します。これは基本的に、Array.prototype
にshimを追加することと同等です。これは、より慣用的でJSっぽいやり方です。 MDNは そのようなコード を提供します。最近では、jQueryラッパーを使用するのではなく、このオプションを使用します。
var categoriesPresent = ['Word', 'Word', 'specialword', 'Word'];
var categoriesNotPresent = ['Word', 'Word', 'Word'];
var foundPresent = categoriesPresent.indexOf('specialword') > -1;
var foundNotPresent = categoriesNotPresent.indexOf('specialword') > -1;
console.log(foundPresent, foundNotPresent); // true false
さらに3年後に編集する
まあ、6。5年?!
最新のJavascriptでこれに最適なオプションはArray.prototype.includes
です:
var found = categories.includes('specialword');
比較も混乱もしない-1
の結果はありません。必要な処理を行います。true
またはfalse
を返します。古いブラウザの場合、ポリフィル可能です MDNのコードを使用 。
var categoriesPresent = ['Word', 'Word', 'specialword', 'Word'];
var categoriesNotPresent = ['Word', 'Word', 'Word'];
var foundPresent = categoriesPresent.includes('specialword');
var foundNotPresent = categoriesNotPresent.includes('specialword');
console.log(foundPresent, foundNotPresent); // true false
どうぞ:
$.inArray('specialword', arr)
この関数は正の整数(与えられた値の配列インデックス)を返します。与えられた値が配列内に見つからなかった場合は-1
を返します。
ライブデモ: http://jsfiddle.net/simevidas/5Gdfc/
あなたはおそらくこれをこんな感じで使いたいでしょう:
if ( $.inArray('specialword', arr) > -1 ) {
// the value is in the array
}
for
ループを使うことができます。
var found = false;
for (var i = 0; i < categories.length && !found; i++) {
if (categories[i] === "specialword") {
found = true;
break;
}
}
私は$.inArray(..)
は好きではありません。それは、ほとんどの普通の人が耐えられないような、醜いjQuery風のソリューションです。これがあなたのアーセナルにシンプルなcontains(str)
メソッドを追加するスニペットです。
$.fn.contains = function (target) {
var result = null;
$(this).each(function (index, item) {
if (item === target) {
result = item;
}
});
return result ? result : false;
}
同様に、$.inArray
を拡張子でラップすることもできます。
$.fn.contains = function (target) {
return ($.inArray(target, this) > -1);
}