Javascript jQuery对象的这种简单比较不进行比较

Javascript jQuery对象的这种简单比较不进行比较,javascript,jquery,Javascript,Jquery,好奇我在这里做错了什么: employee_ids = $('[data-employee_id="'+employee+'"]'); timestamp_ids = $('[data-scheduled_on="'+timestamp+'"]'); var common = $.grep(timestamp_ids, function(element) { $.each(employee_ids, function(idx, item) { if ( item === elem

好奇我在这里做错了什么:

employee_ids = $('[data-employee_id="'+employee+'"]');
timestamp_ids = $('[data-scheduled_on="'+timestamp+'"]');

var common = $.grep(timestamp_ids, function(element) {
  $.each(employee_ids, function(idx, item) {
     if ( item === element ) { console.log ("omg!") };
  });
});

这只返回
时间戳ID的列表,而不是与查找单个匹配项的
员工ID相比的数组。

不管这有什么问题,看起来错误发生在
$。grep


时间戳ID的类型是什么?根据,它需要是一个数组。

不管这有什么错误,看起来错误发生在
$。grep

时间戳ID的类型是什么?根据,它需要是一个数组。

您没有正确使用。grep的每次迭代都应该返回一个布尔值:true将其添加到结果数组中,false将忽略它

var listA = [1, 2, 3];
var listB = [2, 3, 4];

var union = $.grep(listA, function (element) {
    return listB.indexOf(element) !== -1;
}); 
请注意,IE不支持数组上的
.indexOf
,您必须以其他方式实现比较

编辑:如果您试图查找与某些条件匹配的数组的单个项,我建议只使用常规for循环:

var result;
for (var i = 0; i < yourArray.length; i++) {
    if (yourArray[i].id === employee_ID) { // whatever conditions you have
        result = yourArray[i];
        break;
    }
}

if (result) {
    // do whatever
} else {
    // no match
}
var结果;
for(var i=0;i
您没有正确使用。grep的每次迭代都应该返回一个布尔值:true将其添加到结果数组中,false将忽略它

var listA = [1, 2, 3];
var listB = [2, 3, 4];

var union = $.grep(listA, function (element) {
    return listB.indexOf(element) !== -1;
}); 
请注意,IE不支持数组上的
.indexOf
,您必须以其他方式实现比较

编辑:如果您试图查找与某些条件匹配的数组的单个项,我建议只使用常规for循环:

var result;
for (var i = 0; i < yourArray.length; i++) {
    if (yourArray[i].id === employee_ID) { // whatever conditions you have
        result = yourArray[i];
        break;
    }
}

if (result) {
    // do whatever
} else {
    // no match
}
var结果;
for(var i=0;i
这行吗

employee_ids = $('[data-employee_id="'+employee+'"]');
timestamp_ids = $('[data-scheduled_on="'+timestamp+'"]');

var common = $.grep(timestamp_ids, function(element) {    
    return !($.inArray(element, timestamp_ids) == -1)
});
这样行吗

employee_ids = $('[data-employee_id="'+employee+'"]');
timestamp_ids = $('[data-scheduled_on="'+timestamp+'"]');

var common = $.grep(timestamp_ids, function(element) {    
    return !($.inArray(element, timestamp_ids) == -1)
});

哇!谢谢大家的帮助。我刚刚意识到我可以做到:

$('[data-employee_id="'+employee+'"][data-scheduled_on="'+timestamp+'"]');

我也意识到我是个白痴:(

哇!谢谢大家的帮助。我刚刚意识到我可以做到这一点:

$('[data-employee_id="'+employee+'"][data-scheduled_on="'+timestamp+'"]');

我还意识到我是个白痴:(

两个jQuery对象永远不会相等。请比较DOM元素。
if(item==element){console.log(“omg!”)}
足够公平。然后它返回
时间戳ID列表
,并且不与
员工ID进行比较
是否应该将函数传递给grep return bool?您到底想grep到底是什么?您的两个数组看起来像什么?两个数组都是
td
元素的数组。应该只有一个带有exa的数组ct
employee\u id
和一个准确的
时间戳
。因此我试图只返回一个
td
。两个jQuery对象永远不会是等价的。相反,比较DOM元素。
if(item==element){console.log(“omg!”)
足够公平。然后它返回
时间戳ID列表
,并且不与
员工ID进行比较
是否应该将函数传递给grep return bool?您到底想grep到底是什么?您的两个数组看起来像什么?两个数组都是
td
元素的数组。应该只有一个带有exa的数组ct
employee\u id
和一个准确的
时间戳
。因此我试图只返回一个
td
。这是一条评论,不是答案。这是一条评论,不是答案。jBabey,非常感谢你的帮助。请查看我下面的答案。我认为这只是一句话:D@Trip是的,jquery attribute选择器功能非常强大。解决方案很好。jBabey,非常感谢您的帮助。请查看下面我的答案。我想这只需要一行字:D@Trip是的,jquery属性选择器非常强大。很好的解决方案。