繁体   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