2017-12-27 100 views
2

我想實現的是,如果fleetArray中的任何fleet_id存在於om對象中,那麼我想從om對象中刪除它。 有沒有更好的方法來做到這一點?從其他陣列過濾對象

var newObject= {} 
newObject.data=[] 
var om = { 
    "message": "Successful", 
    "status": 200, 
    "data": [{ 
     "tag": "", 
     "array": [ 
      { 
      "type": 0, 
      "fleet_id": 23508, 
     }, 
     { 
      "type": 10, 
      "fleet_id": 235089, 
     } 
     ] 
    }, { 
     "tag": "", 
     "array": [{ 
      "type": 320, 
      "fleet_id": 23218, 

     }] 
    }] 
} 
var fleetArray = ["23218","23508"]; 
om.data.forEach(function(api){ 
    //console.log(api) 
    (api.array).forEach(function(data1){ 
    fleetArray.forEach(function(fleet){ 
     if(fleet==data1.fleet_id){ 
     newObject.data.push(data1) 
     } 
    }) 
    }) 
}) 
console.log(newObject) 
+0

正好,你要刪除什麼?數據中的對象或數據中的對象數組中的對象? – Nikolaus

回答

1

您可以使用地圖和過濾

om.data = om.data.map(e => { 
    e.array = e.array.filter(a => ! fleetArray.includes("" + a.fleet_id)) 
    return e; 
}); 

var om = {"message": "Successful","status": 200,"data": [{"tag": "","array": [{"type": 0,"fleet_id": 23508,},{"type": 10,"fleet_id": 235089,}]}, {"tag": "","array": [{"type": 320,"fleet_id": 23218,}]}]} 
 
var fleetArray = ["23218","23508"]; 
 
om.data = om.data.map(e => { 
 
    e.array = e.array.filter(a => ! fleetArray.includes("" + a.fleet_id)) 
 
    return e; 
 
}); 
 
console.log(om);