如何从对象中删除未定义的属性?

Non*_*one 0 javascript typescript

我有这个对象:

  this.prepaidObject = {
            'customerType' : this.prepaidDetailForm.prepaidDetails.customerType,
            'firstName' : this.prepaidDetailForm.prepaidDetails.firstName,
            'lastName' : this.prepaidDetailForm.prepaidDetails.lastName,
            'note' : this.prepaidDetailForm.prepaidDetails.note,
            'created': this.prepaidDetailForm.prepaidDetails.created
        };
Run Code Online (Sandbox Code Playgroud)

现在有时某些属性是未定义的。我想要的是如果this.prepaidDetailForm.prepaidDetails未定义属性之一不显示它们。因此,例如,如果this.prepaidDetailForm.prepaidDetails.firsName未定义,我不需要创建'firstName'属性 isnide 对象。任何建议我该怎么做?

SPl*_*ten 5

检查您的对象:

    for( var m in this.prepaidObject ) {
        if ( this.prepaidObject[m] == undefined ) {
            delete this.prepaidObject[m];
        }
    } 
Run Code Online (Sandbox Code Playgroud)

  • 这种语法在 Javascript 中已经存在多年了,相信我它有效。 (3认同)

Mos*_*man 5

执行此操作的最短方法是在parse后进行stringify

确切的语法:

let prepaidObjectNew = JSON.parse(JSON.stringify(prepaidObject))
Run Code Online (Sandbox Code Playgroud)

例子

前:

var prepaidObject = {
    'customerType' : 'TestCustType',
    'firstName' : "sample FirstName",
    'lastName' : "sample LastName",
    'note' : undefined
 };
Run Code Online (Sandbox Code Playgroud)

后:

{
    'customerType' : 'TestCustType',
    'firstName' : "sample FirstName",
    'lastName' : "sample LastName"
 };
Run Code Online (Sandbox Code Playgroud)