プラグインを変更しようとしているので、グループ内の「OR」ロジックとグループ間の「AND」ロジックを使用できます。これはworking exampleです。私はそれのためにORロジックを実装する方法tag
に["One","Two"]
を持っている場合はjQueryで "AND"の代わりに "OR"ロジックを実装する方法は?
if ($.inArray(tag, itemTags) > -1) {
return true;
}
:私のコードは次のようになります。
プラグインを変更しようとしているので、グループ内の「OR」ロジックとグループ間の「AND」ロジックを使用できます。これはworking exampleです。私はそれのためにORロジックを実装する方法tag
に["One","Two"]
を持っている場合はjQueryで "AND"の代わりに "OR"ロジックを実装する方法は?
if ($.inArray(tag, itemTags) > -1) {
return true;
}
:私のコードは次のようになります。
I'v e updated your fiddle私はあなたが後にしている機能と思います。
少し前にロジックを移動しました。
ブラウザはあなたがarray.filter
を提供ターゲットにしている場合、あなたはこのようにそれを行うことができます。
var matchingTags = itemTags.filter(function(el) {
return $.inArray(el, tag) > -1;
});
ES5の.some
メソッドを使用すると、これはかなり簡潔になります。古いブラウザにはa shimがあります。
var tag = ["d", "b"],
tagItems = ["a", "b", "c", "d", "e"];
var contains = tagItems.some(function(v) { // whether at least "d" or "b" is in `tagItems`
return ~tag.indexOf(v);
});
if(contains) {
// ...
このtagItems
のためにこれは以下のように動作します。このため
tag = ["d", "b"]; // contains === true (due to "d")
tag = ["foo", "x", "a"]; // contains === true (due to "a")
tag = ["bar"]; // contains === false (due to no matches)
あなたはまた作ることができるヘルパー関数:
$.inArrayMultiple = function(subset, arr) {
return arr.some(function(v) {
return ~subset.indexOf(v);
});
};
をそしてあなたが使用することができます。
if($.inArrayMultiple(tag, itemTags)) {
// ...
ラウンドアバウトソリューションは、の条件を、$(array).each()
関数でラップすることです。反復されたアイテムのいずれかが配列に存在する場合はtrueを返します。
var result = function()
{
var r = false;
$(tag).each(function()
{
if ($.inArray(this, itemTags) > -1)
{
r = true;
}
});
return r;
}
「OR」または「XOR」? –
あなたは何をしようとしているのか詳しく説明できますか?あなたの質問はあなたの要件を把握するにはあまりにも簡単です。プラグインが何をすべきかの例を提供してください。 – jfriend00
グループ内にORを実装し、グループ間に "And"を実装する必要があります – Imran