在jquery中过滤一个对象

时间:2013-01-15 14:41:50

标签: jquery object filter

我有一个我创建的对象如下:

$(this).find('li').each(function(){
                var $itm = $(this);
                localproducts.push({
                    'dataid' : $itm.attr('data-id'), 
                    'datapackage' : $itm.attr('data-package'), 
                    'packageid' : ($itm.children('.packageid').text())
            });
        });

现在我想过滤创建的对象localproducts,例如。我想保存其packageid等于3的项的所有数据集。我认为它可以通过阵列过滤器完成但不确定如何。有帮助吗?谢谢!

2 个答案:

答案 0 :(得分:1)

使用filter

var matching = $(localproducts).filter(function(){  
    return this.packageid == 3;
});

使用each

var dataids = new Array();

$(localproducts).each(function(){  
    if (this.packageid == 3) dataids.push(this.dataid);
});

示例:http://jsfiddle.net/hunter/tqTDQ/

答案 1 :(得分:0)

您可以尝试 jQuery grep实用程序。

以下是文档的网址:

http://docs.jquery.com/Utilities/jQuery.grep

在您的情况下,代码看起来像这样:

var arr = new Array();
arr = jQuery.grep(localproducts, function() {
    return localproducts.packageid == 3;
});

然后,您可以访问过滤后的信息。它将在数组内部。