簡體   English   中英

如何根據屬性拼接一個javascript數組?

[英]How to Splice in a javascript array based on property?

我在 Angularjs Grid 中獲取了一組數據,我需要刪除所有具有相同 CustCountry 的行

ex - 我的客戶數組看起來像

  Customer[0]={ CustId:101 ,CustName:"John",CustCountry:"NewZealand" };
  Customer[1]={ CustId:102 ,CustName:"Mike",CustCountry:"Australia" };
  Customer[2]={ CustId:103 ,CustName:"Dunk",CustCountry:"NewZealand" };
  Customer[3]={ CustId:104 ,CustName:"Alan",CustCountry:"NewZealand" };

因此,如果 CustomerCountry 是新西蘭,則在網格中我需要刪除所有三個記錄

我正在使用拼接方法,讓我知道如何通過 CustomerCountry 拼接使用

 $scope.remove=function(CustCountry)
{
    $scope.Customer.splice(index,1);
 }

如果您可以取回副本,這是.filter的完美用例:

 Customer = [ { CustId:101 ,CustName:"John",CustCountry:"NewZealand" }, { CustId:102 ,CustName:"Mike",CustCountry:"Australia" }, { CustId:103 ,CustName:"Dunk",CustCountry:"NewZealand" }, { CustId:104 ,CustName:"Alan",CustCountry:"NewZealand" }, ] console.log(Customer.filter(cust => cust.CustCountry !== "NewZealand"));

如果您有一個特定的國家/地區,那么只需使用 .filter()

$scope.Customer = $scope.Customer.filter(obj => obj.CustCountry !== "SpecificCountry")

如果您想刪除所有具有重復國家/地區的對象,請參閱從 JS 數組中刪除重復值,您可以這樣做:

var removeDuplicateCountries = function(arr){
    var dupStore = {};

    for (var x= 0; x < arr.length; x++){
        if (arr[x].CustCountry in dupStore){
            dupStore[arr[x].CustCountry] = false;
        } else {
            dupStore[arr[x].CustCountry] = true;
        }
    }


    var newarr = [];
    for (var x= 0; x < arr.length; x++){
        if (dupStore[arr[x].CustCountry]){
            newarr.push(arr[x]);
        }
    }

    return arr;
};
$scope.Customer = removeDuplicateCountries($scope.Customer);

或者結合 .filter() 方法

var removeDuplicateCountries = function(arr){
    var dupStore = {};
    var newarr = arr;

    for (var x= 0; x < arr.length; x++){
        if (arr[x].CustCountry in dupStore){
            newarr = newarr.filter(obj => obj.CustCountry !== arr[x].CustCountry);
        } else {
            dupStore[arr[x].CustCountry] = true;
        }
    }

    return newarr;
};
$scope.Customer = removeDuplicateCountries($scope.Customer);

如果有很多重復的國家,那么使用沒有 .filter() 的方式

暫無
暫無

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

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