javascript - 删除另一个数组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
}
解决方案
试试这个方法:
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);
推荐阅读
- java - Android Studio - 适用于 Android Studio 初学者的 if else 语句
- java - 如何解析文本文件的单个行?
- angular - 找不到名称为“idTypesAccepted”的控件
- apache-kafka - 我正在尝试一个窗口字数统计应用程序流,在消费者控制台中我有一些不可读的字符以及计数
- oracle - oracle中多个case语句的别名
- sql - 我想仅使用 select 语句(无包或函数)在 SQL 中实现以下结果。我该怎么做?
- vba - 抓取数据表
- axios - Axios - 发送带有 & 签名的 GET
- angular - 从 FormBuilder 传递对象的问题
- amazon-web-services - 如何在某个时间段内获取 lambda 的总调用时间