【发布时间】:2018-10-05 18:26:00
【问题描述】:
我试图从对象中删除值为空、空或未定义的属性。我能够删除第一级属性的属性。但是某些场景属性可能包含另一个对象,并且该对象可能包含另一个对象。所以几乎就像链接列表。但我不确定如何找到二级对象属性值。
例如
{
prop1: "value1",
prop2: {
secLevlProp1: "value1",
secLevlProp2: null,
secLevlProp3: {
secLev2Prop1: "value1",
secLev2Prop2: "value2",
secLev2Prop3: {
secLev3Prop1: "value1",
secLev3Prop2: "",
secLev3Prop3: "value3",
}
},
}
prop3: [
{ arrProp: "values", arrProp1: "" },
{ arrProp: "values2", arrProp1: "values4" },
],
prop4: "undefined",
prop5: "value1",
}
从上面这个对象的预期输出
{
prop1: "value1",
prop2: {
secLevlProp1: "value1",
secLevlProp3: {
secLev2Prop1: "value1",
secLev2Prop2: "value2",
secLev2Prop3: {
secLev3Prop1: "value1",
secLev3Prop3: "value3",
}
},
}
prop3: [
{ arrProp: "values" },
{ arrProp: "values2", arrProp1: "values4" },
],
prop5: "value1",
}
这是我尝试过的
Object.keys(myObj).forEach(prop=> {
if (myObj[prop] === '' || myObj[prop] === null || myObj[prop] === undefined) {
delete myObj[prop];
}
});
这在第一级属性上运行良好,但我应该如何将上述代码应用于上述格式对象的链表概念。请有人帮我解决这个问题。
【问题讨论】:
标签: javascript typescript ecmascript-6 ecmascript-5