簡體   English   中英

從AngularJS中的數組中刪除項目

[英]Removing items from array in AngularJS

我有兩個整數數組:我正在Angularjs教程項目中工作。

在控制器中,我有兩個數組:

var arrA=[12,54,76,98,45];
var arrB=[12,98];

我需要從ARRA刪除所有號碼里面ARRB。

實施后arrA必須是這樣的:

arrA=[54,76,45]

在angularjs中實現它的最佳,優雅的方法是什么?

您可以將Array.prototype.filter()Array.prototype.indexOf()結合使用

filter()方法創建一個新數組,其中所有元素都通過了由提供的函數實現的測試。

indexOf()方法返回可以在數組中找到給定元素的第一個索引;如果不存在,則返回-1。

 var arrA=[12,54,76,98,45]; var arrB=[12,98]; arrA = arrA.filter(function(o){ return arrB.indexOf(o) == -1; }); document.write(JSON.stringify(arrA)); 

從我頭頂上掉下來。

//Run a loop to go through all elements in arrB
for (var i=0;i<arrB.length;i++) {
   //keep position of element i in arrA
   //if it's not there index will be equal to -1
   var index=arrA.indexOf(arrB[i])
   //if it is there
   if(index!=-1) {
   //remove 1 element at position index from arrA
    arrA.splice(index,1)
   }
}

祝好運。 這與angular btw無關,它是基本的javascript。

這是一個小提琴: https : //jsfiddle.net/MichaelSel/t2dfg31c/

Angular並不關心數組操作之類的事情。 JavaScript為此提供了便利:

var diff = arrA.filter(function(item) {
    return arrB.indexOf(item) < 0;
});

小提琴

如果arrB非常大,則可能希望將其設為O(N)(對於較小的),直到O(N log N),而不是O(n ^ 2):

var lookup = arrB.reduce(function(lookup, item) {
    lookup[item] = true;
    return lookup;
}, {});
diff = arrA.filter(function(item) {
    return !Object.prototype.hasOwnProperty.call(lookup, item);
});

但是,這僅在您要查看的項目的字符串表示形式下有效。 它適用於整數。

怎么樣:

var result = arrA.filter(function(elem){
  return arrB.indexOf(elem) === -1;
);

要從任何數組中刪除項目,您需要使用拼接:

 $scope.items.splice(index, 1); 

現在您可以做的是,可以運行一個for循環來標識重復元素。 一旦確定,就可以使用拼接功能將其刪除。

暫無
暫無

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

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