var array = [
{
key: 'value',
subArray: [{ key: 'value', subArray: [{}] }]
},
{
key: 'value',
subArray: [{ key: 'value', subArray: [{ key: 'value', subArray: [] }] }]
},
{ key: 'value', subArray: [] }
];
在我的应用程序中,我有对象数组。每个对象都有包含另一个数组的字段,该字段可以包含另一个包含数组的对象,依此类推。在某些情况下,对象可能为空。我需要写函数,该函数将遍历所有数组,找到emty对象并将其删除。我该如何实现?
最佳答案
我认为解决方案是使用递归。
var array = [
{
key: 'value',
subArray: [{ key: 'value', subArray: [{}] }]
},
{
key: 'value',
subArray: [{ key: 'value', subArray: [{ key: 'value', subArray: [] }] }]
},
{ key: 'value', subArray: [] }
];
function lookup(subArr) {
subArr.forEach((sa, i) => {
if (Object.keys(sa).length == 0) {
delete subArr[i];
} else {
lookup(sa.subArray);
}
});
}
array.forEach(a => {
lookup(a.subArray);
});
console.log(array);