簡體   English   中英

javascript基於另一個具有相同對象和值的數組從數組中刪除

[英]javascript delete from array based on another array with same object and values

我有一個對象數組(所有相同的對象類型)。 我有另一個相同對象類型的數組,我想用它來告訴我從第一個數組中刪除哪些對象。 除了循環遍歷所有屬性並比較它們以找到第一個數組中與第二個數組中的元素100%匹配然后從第一個數組中刪除的元素之外,還有一種簡單的方法嗎?

我基本上在一個對象數組上做一個jQuery.grep(),從這個grep得到的數組我想從我傳入它的數組中刪除。

不使用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;
});

如果它只是一個需要從另一個數組中刪除的值數組,那么循環遍歷數組真的很容易。

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;
    }
}

上面的函數包含一個參數,用於知道數組中只有單個值的實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM