使用循环过滤对象数组的Jquery

7
我有一个像这样的对象数组:

myArray = [
{label: "a", 
value: "100"},
{label: "b",
value: "101"},
{label: "c",
value: "102"}
...

我想这样过滤它:

myArrayFiltered = myArray.filter(function(v){ 
    return v["value"] == "101" || v["value"] == "102"});

将返回

myArrayFiltered = [
{label: "b",
value: "101"},
{label: "c",
value: "102"}]

在这个例子中,我想使用值数组来进行筛选。我该怎么做?
3个回答

5

只需检查您正在过滤的值是否在数组中

myArrayFiltered = myArray.filter(function(v){ 
    return ["102", "103"].indexOf(v.value) > -1;
});

这个可以工作。别忘了在结尾加上);。 实际上,我没有使用数组来过滤,而是使用了像第一个数组一样的对象数组。我将其转换为数组以仅获取值,然后使用此解决方案。 - GtAntoine

0
你可以在你的过滤器中使用.some方法:
var requiredValues = ["101", "102", "103"];
myArrayFiltered = myArray.filter(function(v){ 
    return requiredValues.some(function(value) {
        return value === v.value;
    });
});

你可以将 requiredValues 作为第二个参数传递给 .filter(callback[, thisArg]),然后使用 this.indexOf()。这样就不必依赖于“全局”参数了 - Array.prototype.filter() - Andreas
@Andreas 当然可以。我更喜欢这种方法,因为将变量传递并将其作为上下文传递感觉不自然,所以我会保持现状。 - CodingIntrigue

0
var arrValues = ["101", "102"];



 var result = getData(arrValues,"102")



 function getData(src, filter) {
        var result = jQuery.grep(src, function (a) { return a == filter; });
        return result;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接