使用Jquery在对象数组中查找值

时间:2012-12-14 11:59:48

标签: javascript jquery

我有一组对象说items。我想找到name xyz的项目。

目前,我写了一个for循环

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

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

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

6 个答案:

答案 0 :(得分:1)

您可以使用

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

或使用jQuery(为了更好的兼容性,就像许多数组函数一样,IE8上没有filtersome):

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

答案 1 :(得分:1)

类似的东西:

$.grep(yourArray, function(n) { 
    return n.name == "xyz"; 
});

答案 2 :(得分:0)

使用native some method

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

使用jQuery,您需要执行$.grep之类的操作,然后检查长度($.grep(items, function(el){ return el.name=="xyz"; }).length > 1) - 这不是最佳解决方案。如果您想为那些不支持some(并且不想使用the polyfill)的浏览器使用库解决方案,请使用Underscoreany

答案 3 :(得分: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");

答案 4 :(得分:0)

使用jQuery inArray示例

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

可能会帮到你

答案 5 :(得分:0)

    var arr = ["abc", "xyz" ];
        if($.inArray("abc",arr) > 0){
          return true;
        }
else 
return false

这将返回“搜索字符串”的索引

如果没有找到,它将返回-1。