javascript - 如何检查值是否未定义以便不将其添加为对象字段?

标签 javascript angular typescript javascript-objects

我正在开发一个 Angular 应用程序,我对使用 TypeScript 相关的以下疑问有疑问:如果值未定义,如何正确避免将字段插入到对象中。

在我的代码中,我以这种方式创建一个对象:

let aestheticEvaluation: AestheticEvaluation = {
    "altezza": aestheticEvaluationInfo.get('altezza').value,
    "peso": aestheticEvaluationInfo.get('peso').value,
    "phototype": aestheticEvaluationInfo.get('phototype').value.name,
    "photoaging": aestheticEvaluationInfo.get('photoaging').value.name,
    "comedoni": aestheticEvaluationInfo.get('comedoni').value.name,
    "varici": aestheticEvaluationInfo.get('varici').value.name,
    "rugheGlifiche": aestheticEvaluationInfo.get('rugheGlifiche').value.name,
    "accentuazioneDeiPigheNasogeniene": aestheticEvaluationInfo.get('accentuazioneDeiPigheNasogeniene').value.name,
    "gradoAgingCollo": aestheticEvaluationInfo.get('gradoAgingCollo').value.name,
    "occhiaie": aestheticEvaluationInfo.get('occhiaie').value.name,
    "borse": aestheticEvaluationInfo.get('borse').value.name,
    "ipotoniaTerzoInferiore": aestheticEvaluationInfo.get('ipotoniaTerzoInferiore').value.name,
    "cellulite": aestheticEvaluationInfo.get('cellulite').value.name,
    "cicatriciIpertroficheCheloidi": aestheticEvaluationInfo.get('cicatriciIpertroficheCheloidi').value,
    "luceDiWood": aestheticEvaluationInfo.get('luceDiWood').value,
    "notes": aestheticEvaluationInfo.get('notes').value,
};

问题是某些字段可能具有未定义值。在这种情况下,该字段不必插入到我的 aestheticEvaluation 对象中。

例如,如果aestheticEvaluationInfo.get('altezza').value值是未定义,那么这个“altezza”字段就不是插入到对象中

我知道我可以使用if语句来检查每个字段的值是否为null,在这种情况下避免插入对象,但这样代码会很多更加多余。有没有办法直接进入我的对象定义?

最佳答案

所以我想到了两种解决方案,您可以选择更适合您的一种。

  1. 默认值而不是未定义,在这种情况下,您可以将该值设置为默认值(即空字符串“”,或数字零等)。
const object = {
    key: anotherObject?.attribute || ''
};
  • 设置对象值,最后清理对象(删除未定义的值):
  • const object = { key: value };
    
    Object.keys( object ).forEach( key => {
        if ( !object[key] ) delete object[key];
    } );
    

    如果我有任何误解,请告诉我。

    关于javascript - 如何检查值是否未定义以便不将其添加为对象字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68049172/

    相关文章:

    angular - AOT 编译失败,AppModule 中出现意外值 'null'

    javascript - 为什么 webpack 包含依赖的 node_modules?

    javascript - 从 'for loop' 返回响应数据 - AngularJS

    javascript - 仅在选择输入时获取谷歌位置自动完成值

    Angular - 模板中的错误导致无限循环

    node.js - 使用nodejs将图像上传到文件服务器并存储图像的url

    typescript - 将 TypeScript 定义文件转换为 Kotlin

    ReactJS 中的 jsx 不使用 css

    javascript - 获取变量并从0开始计数

    javascript - for循环并获取Element?