gpt4 book ai didi

javascript - 如何从 JavaScript 对象中删除属性?

转载 作者:行者123 更新时间:2023-12-03 02:01:10 26 4
gpt4 key购买 nike

我试图从对象中删除值为空或 null 或未定义的属性。我可以删除第一级属性的属性。但某些场景属性可能包含另一个对象,并且该对象可能包含另一个对象。所以几乎就像链接列表一样。但我不知道如何找到二级对象属性值。

例如

{
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];
}
});

这在第一级属性上工作得很好,但是我应该如何将上面的代码应用到上面格式对象的链表概念上。请有人帮我解决这个问题。

最佳答案

您可以像这样递归地执行此操作:

const deleteProperties = obj => {
Object.keys(obj).forEach(prop => {
if (obj[prop] === '' || obj[prop] === null || obj[prop] === undefined) {
delete obj[prop];
} else if (typeof obj[prop] === 'object') {
deleteProperties(obj[prop]);
}
});
}

在您的示例中,prop4 不会被删除,因为它是一个字符串

关于javascript - 如何从 JavaScript 对象中删除属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50019520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com