删除嵌套javascript对象中的空值

时间:2017-11-14 22:36:35

标签: javascript javascript-objects

我有一个嵌套对象,如果值为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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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