0

私がここで間違っていることに興味があります:

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

4

4 に答える 4

1

他に何が問題なのか、エラーが発生しているようです$.grep

timestamp_ids の typeof は何ですか? jQ docsによると、配列である必要があります。

于 2012-07-20T17:37:51.190 に答える
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
}
于 2012-07-20T17:40:36.677 に答える
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)
});
于 2012-07-20T17:42:36.860 に答える
1

うわあ!みんなの助けに感謝します。私はこれができることに気づきました:

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

私も自分が馬鹿だと気づきました:(

于 2012-07-20T17:49:06.347 に答える