微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从JavaScript对象中删除空的,未定义的值

如何解决如何从JavaScript对象中删除空的,未定义的值

这是我的对象。我正在尝试删除空数组,空字符串,空值,未定义。

 let result = {
  a : [],b: undefined,c: null,d: NaN,e: {},f:{test: undefined,tes1: null,tes2:NaN},g:{name :{x:undefined,y:"s",z: null}},x:"sujon",y:"",}

现在,我只能使用此代码从对象中删除未定义的值;

const removeEmpty = (obj) => {
  Object.keys(obj).forEach(key => {
    if (obj[key] && typeof obj[key] === 'object') removeEmpty(obj[key]);
    else if (obj[key] === undefined) delete obj[key];
  });
  return obj;
};

let res = removeEmpty(result) 

console.log(res)

我的预期结果将是这样:

   let result = {
      g:{name :{y:"s"}},}

我如何获得预期的结果?

解决方法

在递归调用之后,如果结果是一个空对象(没有自己的属性),请将其删除:

let result = {
  a : [],b: undefined,c: null,d: NaN,e: {},f:{test: undefined,tes1: null,tes2:NaN},g:{name :{x:undefined,y:"s",z: null}},x:"sujon",y:"",z:0,}
const removeEmpty = (obj) => {
  Object.keys(obj).forEach(key => {
    if (obj[key] && typeof obj[key] === 'object') removeEmpty(obj[key]);
    if (
      (!obj[key] && obj[key] !== 0) ||
      (typeof obj[key] === 'object' && Object.keys(obj[key]).length === 0)
    ) {
      delete obj[key];
    }
  });
  return obj;
};

let res = removeEmpty(result) 

console.log(res)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。