簡體   English   中英

如何從JavaScript中的數組元素中刪除對象

[英]how to remove object from array element in javascript

我正在使用Javascript。 我有一組數據,我需要根據元素值刪除對象。 在這里,我附上了我的代碼。 在我的代碼中,我有month元素。 當月份為1時,我需要刪除該對象。 這個怎么做?

var Data=[ 
    { "State": "PA", "DispenseMonth": "1/1/2017" }, 
    { "State": "MS", "DispenseMonth": "1/1/2017" }, 
    { "State": "CT", "DispenseMonth": "1/1/2017" }, 
    { "State": "TX", "DispenseMonth": "2/1/2017"}, 
    { "State": "DE", "DispenseMonth": "2/1/2017"}, 
    { "State": "TN", "DispenseMonth": "2/1/2017" }, 
    { "State": "FL", "DispenseMonth": "3/1/2017" }, 
    { "State": "SD", "DispenseMonth": "4/1/2017" }, 
    { "State": "GA", "DispenseMonth": "5/1/2017"}, 
    { "State": "SC", "DispenseMonth": "6/1/2017"}, 
    { "State": "IA", "DispenseMonth": "7/1/2017" }, 
    { "State": "RI", "DispenseMonth": "8/1/2017" }, 
    { "State": "ID", "DispenseMonth": "9/1/2017"}
] 

Data.forEach(item => {
     return item.Month = item.DispenseMonth.split('/')[0];
});
console.log(Data);

我試過的代碼:

 for(i = 0; i < MainStateData.length; i++) {
    var bjMonth = MainStateData[i].Month;
    if (bjMonth == 1) {
        delete MainStateData[bjMonth]; 
        MainStateData.splice([i]);
        delete MainStateData[i];
    }     
}

嘗試Data.filter(obj => obj["DispenseMonth"].split('/')[0] !== '1') filter方法遍歷Data數組並調用函數obj => obj["DispenseMonth"].split('/')[0] !== '1'每個對象上均obj => obj["DispenseMonth"].split('/')[0] !== '1' 如果回調返回true,則將該項保留在數組中。

Data = Data.filter(obj => obj["DispenseMonth"].split('/')[0] !== '1')將有效地從數組中刪除該對象。

首先找到要刪除的元素/對象的索引。

例如,假設您要刪除第二個元素(索引為0)

var array = ["Apple", "Mango", "Grapes", "Bread"];
var grape = array.splice(2, 1);

 var Data = [{ "State": "PA", "DispenseMonth": "1/1/2017" }, { "State": "MS", "DispenseMonth": "1/1/2017" }, { "State": "CT", "DispenseMonth": "1/1/2017" }, { "State": "TX", "DispenseMonth": "2/1/2017" }, { "State": "DE", "DispenseMonth": "2/1/2017" }, { "State": "TN", "DispenseMonth": "2/1/2017" }, { "State": "FL", "DispenseMonth": "3/1/2017" }, { "State": "SD", "DispenseMonth": "4/1/2017" }, { "State": "GA", "DispenseMonth": "5/1/2017" }, { "State": "SC", "DispenseMonth": "6/1/2017" }, { "State": "IA", "DispenseMonth": "7/1/2017" }, { "State": "RI", "DispenseMonth": "8/1/2017" }, { "State": "ID", "DispenseMonth": "9/1/2017" } ]; Data.forEach(function(item) { return item.Month = parseInt(item.DispenseMonth.split('/')[0], 10); }); console.log("Array Length Before Deletion: ", Data.length); // Option 1: Both works for (i = Data.length - 1; i >= 0; --i) { var bjMonth = Data[i].Month; if (bjMonth === 1) { console.log("Deleted: ", Data[i].State); Data.splice(i, 1); } } // Option 2: Both works /*Data = Data.filter(function(item, index) { return item.Month > 1 });*/ console.log("Array Length After Deletion: ", Data.length); 

參考文檔: MDN Array.splice

您可以使用帶有splice反向for循環從數組中刪除項目。

for (var i = Data.length - 1; i >= 0; i--) {
    if (Data[i].DispenseMonth.split('/')[0] === '1') {
        Data.splice(i, 1);
    }
}

 var Data = [{ "State": "PA", "DispenseMonth": "1/1/2017" }, { "State": "MS", "DispenseMonth": "1/1/2017" }, { "State": "CT", "DispenseMonth": "1/1/2017" }, { "State": "TX", "DispenseMonth": "2/1/2017" }, { "State": "DE", "DispenseMonth": "2/1/2017" }, { "State": "TN", "DispenseMonth": "2/1/2017" }, { "State": "FL", "DispenseMonth": "3/1/2017" }, { "State": "SD", "DispenseMonth": "4/1/2017" }, { "State": "GA", "DispenseMonth": "5/1/2017" }, { "State": "SC", "DispenseMonth": "6/1/2017" }, { "State": "IA", "DispenseMonth": "7/1/2017" }, { "State": "RI", "DispenseMonth": "8/1/2017" }, { "State": "ID", "DispenseMonth": "9/1/2017" } ]; for (var i = Data.length - 1; i >= 0; i--) { if (Data[i].DispenseMonth.split('/')[0] === '1') { Data.splice(i, 1); } } console.log(Data); 

您可以反向遍歷陣列並檢查月份

var month = '1';

for(var i = Data.length - 1; i > -1 ; i-- ){
   //date format dd/m/yyyy             
   if(Data[i].DispenseMonth.split('/')[1] == month)
       Date.splice(i, 1);
}

使用過濾方法:

var newArray = Data.filter(function(value){
  return value.DispenseMonth.split('/')[0]!=1;
});

// this will give the array which do not contain objects with month=1
console.log(newArray);

希望這可以幫助。

暫無
暫無

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

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