0

我有一组对象说items。我想找到具有namexyz 的项目。

目前,我写了一个 for 循环

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

是否可以使用 jquery 将此循环缩短为一行语句?像这样的东西:

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

6 回答 6

1

你可能会使用

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

或使用 jQuery(为了更好的兼容性,就像许多 Array 函数、过滤器某些在 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(并且不想使用polyfill)的浏览器使用库解决方案,请使用Underscoreany.

于 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

使用 jQuerys inArray 示例

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 回答