0

と言うオブジェクトの配列がありますitemsnamexyzを持つアイテムを見つけたいです。

現在、forループを書きました

for(var i = 0; i < items.length; i++)
{
    if( items[i].name == "xyz" ) 
    {
        found = true;
        break;
    }
}

jqueryを使用して、このループを1行のステートメントに短縮することはできますか? このようなもの:

$.find(items, "name", "xyz");
4

6 に答える 6

1

あなたが使うかもしれない

var matchingItems = items.filter(function(v){return v.name=="xyz"});

またはjQueryを使用する(互換性を高めるために、多くの配列関数、フィルター、または一部はIE8では使用できないため):

var matchingItems = $.grep(items, function(v){return v.name=="xyz"});
于 2012-12-14T12:03:05.063 に答える
1

何かのようなもの:

$.grep(yourArray, function(n) { 
    return n.name == "xyz"; 
});
于 2012-12-14T12:05:45.400 に答える
0

ネイティブsomeメソッドを使用します:

items.some(function(el) { return el.name == "xyz"; })

jQueryを使用する場合は、次のような操作を行っ$.grepてから、長さ($.grep(items, function(el){ return el.name=="xyz"; }).length > 1)を確認する必要があります。これは最適なソリューションではありません。someサポートしていない(そしてポリフィルを使用したくない)ブラウザにライブラリソリューションを使用する場合は、アンダースコアを使用してくださいany

于 2012-12-14T12:03:40.863 に答える
0
(function( $ ) {
    $.find = function( array, property, key ) {
        var found = false;
        for(var i = 0; i < array.length; i++)
        {
            if( array[i][property] == key ) 
            {
                found = true;
                break;
            }
        }
        return found ? i : -1;
    };
})( jQuery );

使用法:$.find(items, "name", "xyz");

于 2012-12-14T12:04:04.417 に答える
0

jQuerysinArrayの例を使用する

http://api.jquery.com/jQuery.inArray/

あなたを助けるかもしれない

于 2012-12-14T12:05:40.727 に答える
0
    var arr = ["abc", "xyz" ];
        if($.inArray("abc",arr) > 0){
          return true;
        }
else 
return false

</p>

これは「検索文字列」のインデックスを返します

見つからない場合は -1 を返します。

于 2012-12-14T12:16:52.213 に答える