2017-07-06 3 views
0

から未定義のプロパティを削除し、この次私は再帰的に定義されていないすべてのフィールドをきれいに、など親として空のオブジェクトがしたいオブジェクト

例:

{ 
    "a": { 
    "b": { 
     "c": undefined, 
    } 
    }, 
    "d": undefined, 
    "e": { 
    f: undefined, 
    }, 
    "g": { 
    "h": 'I', 
    "j": undefined, 
    }, 
    "k": "L", 
    "m": { 
    "n": { 
     "o": { 
     "z": undefined, 
     } 
    }, 
    "p": 'toto' 
    } 
} 

私は次のような結果を期待しています:

{ 
    "g": { 
    "h": 'I', 
    }, 
    "k": 'L', 
    "m": { 
    "p": 'toto' 
    } 
} 

はあなたの助けをありがとう

+0

? –

+0

[javascriptのオブジェクトから空白の属性を削除する]の可能な複製(https://stackoverflow.com/questions/286141/remove-blank-attributes-from-an-object-in-javascript) – ASDFGerte

答えて

1

function filter(obj) { 
 
    for (var key in obj) { 
 
    if (obj[key] === undefined) { 
 
     delete obj[key]; 
 
     continue; 
 
    } 
 
    if (obj[key] && typeof obj[key] === "object") { 
 
     filter(obj[key]); 
 
     if (!Object.keys(obj[key]).length) { 
 
     delete obj[key]; 
 
     } 
 
    } 
 
    } 
 
    return obj; 
 
} 
 

 
var data = { 
 
    "a": { 
 
    "b": { 
 
     "c": undefined, 
 
    } 
 
    }, 
 
    "d": undefined, 
 
    "e": { 
 
    "f": undefined, 
 
    }, 
 
    "g": { 
 
    "h": 'I', 
 
    "j": undefined, 
 
    }, 
 
    "k": "L", 
 
    "m": { 
 
    "n": { 
 
     "o": { 
 
     "z": undefined, 
 
     } 
 
    }, 
 
    "p": 'toto' 
 
    } 
 
}; 
 

 
console.log(filter(data));

単純にこれらのキーを削除し、再帰的に繰り返します。あなたがこれまでに試してみました何

+1

空のオブジェクトも削除する必要があります – mhodges

+2

'typeof null ===" object'。これに変更することができます:if(obj [key] && typeof obj [key] === "object") ' –

+1

@ibrahimmahrir – mhodges

2

function cleanArray(actual) { 
 
    var newArray = new Object(); 
 
newArray=JSON.parse(JSON.stringify(actual)); 
 
    return newArray; 
 
} 
 
var obj={ 
 
    "a": { 
 
    "b": { 
 
     "c": undefined, 
 
    } 
 
    }, 
 
    "d": undefined, 
 
    "e": { 
 
    f: undefined, 
 
    }, 
 
    "g": { 
 
    "h": 'I', 
 
    "j": undefined, 
 
    }, 
 
    "k": "L", 
 
    "m": { 
 
    "n": { 
 
     "o": { 
 
     "z": undefined, 
 
     } 
 
    }, 
 
    "p": 'toto' 
 
    } 
 
}; 
 
console.log(cleanArray(obj));

+0

それは全く動作しません... – Joelito

+0

私はGoogle Chromeでテストしています – Osama

+0

インターネットエクスプローラでも、F12を押してコンソールを確認します – Osama

関連する問題