首页 > 解决方案 > 删除另一个数组Javascript中的数组内的对象

问题描述

let bigArray = [
{
    Name: 'Alice',
    children: [
                 {Name: 'AliceChild1', Country: 'country1'}, 
                 {Name: 'AliceChild2', Country: 'country2'}
    ]
},
{
    Name: 'Bob',
    children: [
                 {Name: 'BobChild1', Country: 'country3'}, 
                 {Name: 'BobChild2', Country: 'country4'}
    ]
},
{
    Name: 'Sam',
    children: [
                 {Name: 'SamChild1', Country: 'country5'}, 
                 {Name: 'SamChild2', Country: 'country6'}
    ]
},
]

我想从另一个数组中的数组中删除一个对象。属性Name是独一无二的。例如,如果BobChild2被删除bigArray应该返回为

let bigArray = [
{
    Name: 'Alice',
    children: [
                 {Name: 'AliceChild1', Country: 'country1'}, 
                 {Name: 'AliceChild2', Country: 'country2'}
    ]
},
{
    Name: 'Bob',
    children: [
                 {Name: 'BobChild1', Country: 'country3'},
    ]
},
{
    Name: 'Sam',
    children: [
                 {Name: 'SamChild1', Country: 'country5'}, 
                 {Name: 'SamChild2', Country: 'country6'}
    ]
},
]

在 JavaScript 中执行此操作的最佳方法是什么?

更新:我的回答

function removeChild(bigArray, childName) {
  let copyBigArray = []
  bigArray.forEach((item) => {
    let Obj = {
      Name: item.Name,
      children: item.children.filter(c => c.Name !== childName)
    }
    copyBigArray.push(Obj)
  })
  return copyBigArray
}

标签: javascriptarrays

解决方案


试试这个方法:

let bigArray = [{
    Name: 'Alice',
    children: [{
        Name: 'AliceChild1',
        Country: 'country1'
      },
      {
        Name: 'AliceChild2',
        Country: 'country2'
      }
    ]
  },
  {
    Name: 'Bob',
    children: [{
        Name: 'BobChild1',
        Country: 'country3'
      },
      {
        Name: 'BobChild2',
        Country: 'country4'
      }
    ]
  }
]


bigArray.forEach(function(o) {
  o.children = o.children.filter(s => s.Name != 'BobChild2');
});

console.log(bigArray);


推荐阅读