当某个属性具有某些属性值时,如何从另一个数组中的某个数组中删除整个对象?

时间:2020-05-01 08:58:09

标签: javascript arrays object ecmascript-6

我需要一个函数来删除数组中的某些整个对象:

let selectedItem = { LinkID: 1 };

let sindecs = [
  {
    estado: { id: 2, siga: "AL", nome: "Alagoas" },
    link: [
      { LinkID: 1, Link: "link1", Active: false },
      { LinkID: 2, Link: "link 2", Active: false }
    ],
    SindecID: 3
  },
  {
    estado: { id: 19, siga: "RJ", nome: "Rio de Janeiro" },
    link: [{ LinkID: 3, Link: "rio", Active: false }],
    SindecID: 4
  }
];

函数removeLinkObj(sindecs,selectedItem){

// I need to fill here with a function to remove the selectedItem that match with === sindecs.link.LinkID

}

removeLinkObj(sindecs,selectedItem)

结果应为:

let sindecs = [
  {
    estado: { id: 2, siga: "AL", nome: "Alagoas" },
    link: [
    //REMOVED LINE
      { LinkID: 2, Link: "link 2", Active: false }
    ],
    SindecID: 3
  },
  {
    estado: { id: 19, siga: "RJ", nome: "Rio de Janeiro" },
    link: [{ LinkID: 3, Link: "rio", Active: false }],
    SindecID: 4
  }
];

1 个答案:

答案 0 :(得分:1)

function removeLinkObj(sindecs, selectedItem){

   return sindecs.map((row) => {

        row.link = row.link.filter(item => item.LinkID !== selectedItem.LinkID);
        return row;


   });

}