好奇我在这里做错了什么:
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!") };
});
});
这只返回timestamp_ids
的列表,而不是与查找单个匹配的employee_ids
进行比较的数组。
答案 0 :(得分:1)
无论出现什么其他问题,看起来错误发生在$.grep
timestamp_ids的类型是什么?根据{{3}},它需要是一个数组。
答案 1 :(得分:1)
您没有正确使用.grep。 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
}
答案 2 :(得分: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)
});
答案 3 :(得分:1)
哇!谢谢大家的帮助。我才意识到我能做到这一点:
$('[data-employee_id="'+employee+'"][data-scheduled_on="'+timestamp+'"]');
我也意识到我是个白痴:(