我们可以使用$ .grep过滤掉不需要的数组项,所以
data = $.grep(jsonstr, function(d) {
return d.attr == "x";
})
将只返回带有attr == x
的数组对象如果我想同样过滤掉位于对象下的数组,我可以用$ .grep做什么?所以
data = $.grep(jsonstr2, function(d) {
$.grep(d.GL2_ACCTS, function(gl2) {
return (gl2.localamt > lBound && gl2.localamt < uBound);
});
return d.DOC_TYPE == doc;
});
应该过滤位于数据中每个元素内的arrElement数组吗?
数据如下:
jsonstr =
[{
DOC_TYPE: "1A",
GL1_ACCOUNT: "Other|Mark Up(Other)",
GL2_ACCTS: [
{name: "Expenses|Conferences(Expenses)", localamt: 123, count: 2},
{name: "Expenses|Consultancy(Expenses)", localamt: 49, count: 1}
]
}]
我在改变lBound和uBound时调用它。它只会返回所有内容,不会发生过滤。
答案 0 :(得分:1)
您需要将过滤后的数组存储回对象中。
data = $.grep(jsonstr2, function(d) {
d.GL2_ACCTS = $.grep(d.GL2_ACCTS, function(gl2) {
return (gl2.localamt > lBound && gl2.localamt < uBound);
});
return d.DOC_TYPE == doc;
});
请注意,即使在外部$.grep
未返回的对象中,也会过滤掉帐户。如果您不想这样做,则需要先进行DOC_TYPE
检查:
data = $.grep(jsonstr2, function(d) {
if (d.DOC_TYPE == doc) {
d.GL2_ACCTS = $.grep(d.GL2_ACCTS, function(gl2) {
return (gl2.localamt > lBound && gl2.localamt < uBound);
});
return true;
} else {
return false;
}
});
答案 1 :(得分:0)
您不应该看到数据,问题是否与之相关 它可以根据它们的属性来过滤数组 在数组中,即。我可以使用嵌套的$ .grep来过滤底层的 数组以及主数据数组?
是