【问题标题】:Delete null values in nested javascript objects删除嵌套 javascript 对象中的空值
【发布时间】:2018-04-28 00:40:27
【问题描述】:

我有一个嵌套对象,如果值为 null 或未定义,我想删除所有键/值对。我设法让下面的代码正常工作,但它没有检查嵌套的键/值对,想知道是否有人可以帮我弄清楚需要在代码中添加什么?

var myObj = {
  fName:'john',
  lName:'doe',
  dob:{
    displayValue: null, 
    value: null
  },
  bbb:null
};

function clean(obj) {
  for (var propName in obj) { 
    if (obj[propName] === null || obj[propName] === undefined || obj[propName] === '') {
      delete obj[propName];
    }
  }
  return obj;
}
console.log(clean(myObj));

上面的代码完成了删除 'bbb' 及其值的工作,我也希望对由 'dob' 表示的嵌套对象执行相同的操作。

https://jsbin.com/mudirateso/edit?js,console,output

非常感谢任何帮助。

【问题讨论】:

标签: javascript javascript-objects


【解决方案1】:

你已经快到了。如果属性是另一个对象,只需让函数递归:

var myObj = {
  fName:'john',
  lName:'doe',
  dob:{
    displayValue: null, 
    value: null
  },
  bbb:null
};

function clean(obj) {
  for (var propName in obj) { 
    if (obj[propName] === null || obj[propName] === undefined || obj[propName] === '') {
      delete obj[propName];
    } else if (typeof obj[propName] === "object") {
      // Recurse here if the property is another object.
      clean(obj[propName])
    }
  }
  return obj;
}
console.log(clean(myObj));

【讨论】:

  • 但要小心无限递归。
  • 谢谢你们!!非常感激。 @Crice
猜你喜欢
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 2020-07-24
相关资源
最近更新 更多