0
var matches = $.grep($.trolley, function(element){ 
    if ((element.id == grocery.id) && (element.dimensions == grocery.dimensions)) {
        console.log('t'); 
    } else { 
        console.log('f'); 
    } 
});

所以我说3个项目。id 1 dimensions 4, id 2 dimensions 8, id 2 dimensions 8

我想找到不在数组中的项目,但是一旦它与数组中已经有该项目的项目匹配id,它就会返回一个匹配项......即使dimensions不同:(

http://jsfiddle.net/justrealmilk/6SSKj/

4

1 回答 1

2

过滤器函数需要返回truefalse取决于测试是否成功(实际上,只true需要这种情况,但两者都做更干净,恕我直言):

var matches = $.grep($.trolley, function(element){ 
    if ((element.id == grocery.id) && (element.dimensions == grocery.dimensions)) {
        console.log('t'); 
        return true;
    } else { 
        console.log('f');
        return false;
    } 
});

由于您没有返回任何内容,因此它隐式返回undefined,这应该导致空的matches。我不确定你为什么会得到任何东西,更不用说第一个匹配了id

于 2013-06-13T16:39:49.620 回答