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);

07-24 09:36