从其他数组中过滤对象

时间:2017-12-27 12:12:04

标签: javascript

我想要实现的是,如果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)

1 个答案:

答案 0 :(得分: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);