首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除对象中的空属性或未定义属性

删除对象中的空属性或未定义属性
EN

Stack Overflow用户
提问于 2019-04-04 16:33:44
回答 5查看 490关注 0票数 2

我想要创建一个删除空属性和未定义属性的方法。

要做到这一点:

我把普通的对象转换成表 在上面循环 如果存在空或未定义的属性,则对属性进行筛选。

但问题是,我并不是来用新的价值观来重构我的目标。让我们来看看:

代码语言:javascript
运行
复制
var req = {
    adtForm1: {
      firstName: 'John',
      lastName: undefined,
      middleName: ''
    },
    adtForm2: {
      firstName: null,
      lastName: 'Doe',
      middleName: ''
    }
  };

  removeUndefinedFormsAttributes = (somesForms) => {
    const forms = Object.values(somesForms);
    const formsUpdate = {};
    forms.forEach(item => {
      const formFields = Object.values(item);
      formFieldsKeys = Object.keys(item);
      const formFiltered = formFields.filter(field => { return field !== null && field !== undefined; });
      console.log("formFiltered", formFiltered);
    })
    console.log(somesForms)
    return forms;
  };

removeUndefinedFormsAttributes(req)

正如我们在代码段中所看到的,formFiltered更改了好的值,但我需要返回与somesForms相同的对象。这就是我需要的:

代码语言:javascript
运行
复制
expectedValue = {
    adtForm1: {
        firstName: 'John',
        middleName: ''
    },
    adtForm2: {
        lastName: 'Doe',
        middleName: ''
    }
}

我知道我需要使用减()函数和key()函数,但实际上我不知道如何使用。我真的很感激你的帮助。

EN

Stack Overflow用户

发布于 2019-04-04 16:51:49

如果这些属性不是null或未定义,您可以简单地将它们克隆到一个新对象中。

非常简单的代码,通过obj递归循环,并且只插入有效的属性:

代码语言:javascript
运行
复制
function clearObject(object) {
    if (typeof(object) != "object") return false;

    const clean_object = {};

    for (let k in object) {
        let item = object[k];
        if (item === null || item === undefined) continue;
        clean_object[k] = clearObject(item) || item;
    }

    return clean_object;
}
票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55520988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档