0

オブジェクトの配列があります (すべて同じオブジェクト タイプ)。同じオブジェクト タイプの別の配列があり、最初の配列から削除するオブジェクトを指定するために使用したいと考えています。すべてのプロパティをループしてそれらを比較し、2 番目の配列の要素と 100% 一致する最初の配列の要素を見つけてから、最初の配列から削除する以外に、これを行う簡単な方法はありますか?

私は基本的に、オブジェクトの配列に対して jQuery.grep() を実行しており、この grep から得られた配列を、渡した配列から削除したいと考えています。

4

2 に答える 2

2

jQuery.grep() を使用する代わりに、新しい配列を取得するには、それをjQuery.map()に置き換えます。保持する必要がある場合は同じオブジェクトを返し、削除する場合は null を返します。

たとえば、あなたのコードが

var toBeDeleted = $.grep(array, function(val) {
  return condition(val);
});

に変更します

array = $.map( array, function(val) {
  if(condition(val))
    return null;
  return val;
});
于 2012-11-28T22:11:57.980 に答える
0

別の配列から削除する必要がある値の配列だけである場合、配列をループするのは非常に簡単です。

function deleteMatchingValues( target, toBeDeleted, oneMatch ) {
    var i = target.length, j = toBeDeleted.length;

    while( i-- ) {
        while( j--) {
            if( target[i] === toBeDeleted[j] ) {
                target.splice(i,1);
                if( oneMatch ) { break; }
            }
        }
        j = toBeDeleted.length;
    }
}

上記の関数には、配列に値のインスタンスが1つしかないことがわかっている場合のパラメーターが含まれています。

于 2012-11-28T22:28:27.217 に答える