我正在开发一个 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,在这种情况下避免插入对象,但这样代码会很多更加多余。有没有办法直接进入我的对象定义?
最佳答案
所以我想到了两种解决方案,您可以选择更适合您的一种。
- 默认值而不是未定义,在这种情况下,您可以将该值设置为默认值(即空字符串“”,或数字零等)。
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/