簡體   English   中英

使用javascript從另一個數組中刪除數組的元素

[英]Remove elements of an array from another array using javascript

我有兩個數組

a[] = [1,2,3,4]
b[] = [1,4]

需要從數組 a 中刪除數組 b 的元素。

預期輸出:

 a[] = [1,4]

我會使用過濾器方法:

a = a.filter(function (item) {
    return b.indexOf(item) === -1;
});
const array_diff = (a, b) => a.filter(v => !b.includes(v))

如果你想支持 IE

const array_diff = (a, b) => a.filter(v => b.indexOf(v) === -1);

我正在遍歷第二個數組,並使用indexOf檢查值是否在第一個數組中,如果是,我使用splice將其刪除。

var a = [1,2,3,4,5];
var b = [3,4,5];

b.forEach(function(val){
  var foundIndex = a.indexOf(val);
  if(foundIndex != -1){
    a.splice(foundIndex, 1);
  }
});

或者

var a = [1,2,3,4,5];
var b = [3,4,5];

a = a.filter(x => b.indexOf(x) == -1);

對於 IE 8,

for(var i = 0; i < b.length; i++){
   var val = b[i];
   var foundIndex = a.indexOf(val);
   if(foundIndex != -1){
      a.splice(foundIndex, 1);
   }
}

查看$.grep$.inArray的 jQuery 文檔。

下面是代碼的樣子:

var first = [1,2,3,4],
    second = [3,4];

var firstExcludeSecond = $.grep(first, function(ele, ix){ return $.inArray(ele, second) === -1; });

console.log(firstExcludeSecond);

基本上相當於遍歷第一個數組 ($.grep) 並確定給定值是否在第二個數組 ($.inArray) 中。 如果 $.inArray 返回的值為 -1,則第一個數組中的值不存在於第二個數組中,因此我們抓取它。

function myFunction(a, b) {
  return a.filter(item => b.indexOf(item) < 0)
}

console.log(myFunction([1, 2, 3], [1, 2]))

暫無
暫無

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

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