如何按值从数组中过滤对象并使用该值来省略另一个或多个对象?

时间:2014-01-24 07:19:09

标签: arrays underscore.js

我有一个数组,它有一堆对象,我想通过'name'值过滤对象,我想再次使用下划线从另一个对象数组中省略那些对象。

我知道我们可以使用earch,但我没有得到正确的方法来做到这两点..

是谁帮我做这个?

示例:

传入数组:

var incomingArray = [
    {"name":"apple"},
    {"name":"orange"},
    {"name":"dog"},
    {"name":"cat"},
    {"name":"egle"}
];

过滤键:

var omit = ['orange' ,'dog'];

//我需要检查'orange'或'dog'是否存在,如果是这样的话。

var filtered = _.filter(incomingArray, function(obj, i){
    return obj.name === omit[i]['name'];//this is wrong i need to loop again how?
});

var anotherArray = [
        {"name":"apple"},
        {"name":"orange"},
        {"name":"dog"},
        {"name":"cat"},
        {"name":"egle"}
]

只返回没有省略的数组,如下所示:

  var outgoingArray = [ 
    {"name":"apple"},
    {"name":"cat"},
    {"name":"egle"} ]

我们如何通过适当的方法实现这一目标?

demo

1 个答案:

答案 0 :(得分:2)

你快到了!使用indexOf检查名称是否不属于省略数组:

var filtered = _.filter(incomingArray, function(obj) {
    return omit.indexOf(obj.name) == -1;
});