gpt4 book ai didi

javascript - 如果值为 null、未定义或为空,如何从对象和/或数组中删除属性?

转载 作者:行者123 更新时间:2023-11-28 18:04:39 25 4
gpt4 key购买 nike

所以我有一个相当复杂的对象,如下所示:

var obj = {
v1:"ok",
v2:[
{av1:"foo", av2:null}, // notice there's a null here
{av1:"thing", av2:"stuff"}
],
v3: null,
v4:{
ov1:"slim",
ov2:"shady",
ov3:null // null
},
v5:[], // empty
v6:{} // empty
}

我想取回这个:

var obj = {
v1:"ok",
v2:[{av1:"foo"},{av1:"thing", av2:"stuff"}],
v4:{ov1:"slim",ov2:"shady"}
}

我正在尝试编写一个可以删除任何 null、未定义或空内容的函数,但它很快就变成了意大利面条噩梦,而且不起作用。

我觉得有一种更短更优雅的方法来做到这一点,但这是我到目前为止的代码:

function deleteNulls(o){
for(let i in o){
if(typeof o[i] == "Object"){
o[i] = deleteNulls(o[i])
}
else if(typeof o[i] == "Array"){
o[i] = deleteNulls(o[i])
}
if(o[i] == null || o[i] == "undefined" || o[i] == [] | o[i] == {})
delete o[i]
else {
if(typeof o == "Object"){
delete this.o[i]
return o
}
else if (typeof o == "Array")
return o.filter(k => o[k] != null)
}
}
return o
}

var obj = deleteNulls(obj)

我对如何修复上面代码中的错误不感兴趣。如果我愿意,我可以让它工作,

我想知道是否有更简单的方法。

最佳答案

我建议使用像 lodash 这样的东西。它经过了速度和效率的测试和同行评审。

类似于:

var result = _.omitBy(my_object, _.isNil);

这将删除所有空值,您需要更改第二个参数以删除空对象和数组。

关于javascript - 如果值为 null、未定义或为空,如何从对象和/或数组中删除属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42910647/

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