簡體   English   中英

從對象數組中刪除對象

[英]Delete objects from array of objects

Object {Results:Array[3]}
Results:Array[3]
[0-2]
    0:Object
           id=1     
           name: "Rick"
           upper:"0.67"
    1:Object
           id=2     
           name:'david'
           upper:"0.46"
    2:Object
           id=3     
           name:'ashley'
           upper:null

我有如上所述的對象數組。 和一個名為delete_id的變量

delete_id = 1,2

因此,這表明ID為1和2的對象。它應刪除對象數組中的對象,並給出最終結果,如下所示:

Object {Results:Array[1]}
Results:Array[3]
[0]
    0:Object
           id=3     
           name:'ashley'
           upper:null

有人可以讓我知道如何實現這一目標。 我試圖使用下面的功能。 它僅刪除variale delete_id中的第一個值。 即編號為1的id被刪除。 類似地,如果我們有delete_id = 2,3,那么它只會刪除2。我想同時刪除2和3 ...

function removeID(delete_id) {
    tabledata = tabledata.filter(function (obj) {
        return delete_id.indexOf(obj.id);
    });
function findObj(array,value,key) {
            var result = array.filter(function (obj) {
                if (obj[key] === value || obj[key] == value)
                    return obj;
            });
            return result;
        };

首先從數組(tabledata)中找到對象,值= 1(delete_id),鍵= json(id)中的鍵

    var selectedObj=findObj(tabledata,delete_id,'id');

獲取該對象在數組中的索引

    var index=tabledata.indexOf(selectedObj[0]);

刪除其索引

    tabledata.splice(index,1);

您可以使用.split().map()delete_id字符串轉換為數字ID數組。 然后,您可以使用.filter()進行清理。

 var players = [ { id: 1, name: "Rick", upper: "0.67" },{ id: 2, name: "david", upper: "0.46" },{ id: 3, name: "ashley", upper: null } ]; var delete_id = "1,2"; var exclude = delete_id.split(',').map(Number); players = players.filter(function(player) { return exclude.indexOf(player.id) == -1; }); console.log(players); 

如果您更改removeID代碼以查看索引是否等於-1,則該代碼運行

 function removeID(delete_id) { tabledata = tabledata.filter(function(obj) { return delete_id.indexOf(obj.id)===-1; //added === -1 here }); } var tabledata = [{ id: 1, name: "Rick", upper: "0.67" }, { id: 2, name: 'david', upper: "0.46" }, { id: 3, name: 'ashley', upper: null }]; var ids = [1,2]; //defined it as an array (not sure if you did) removeID(ids); console.log(tabledata); 

我假設delete_id是一個整數數組。 在這種情況下,您可以使用以下代碼進行過濾以排除提供的ID。

它將檢查obj.id是否不在delete_id中,然后obj將包含在新的過濾數組中。 同樣,它將保留表數據不變。

var filtered = tabledata.filter(function(obj) {
   return !(obj.id in delete_id)
})

暫無
暫無

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

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