gpt4 book ai didi

javascript - 如何从对象中深度移除空值、空对象和空数组

转载 作者:行者123 更新时间:2023-11-29 16:01:41 25 4
gpt4 key购买 nike

我有一个看起来像这样的对象:

var myObject = { a: { b: [{}], c: [{}, {d: 2}], e: 2, f: {} }, g:{}, h:[], i: [null, 2] }

我想删除空值和空对象(数组和对象),使其看起来像:

{ a: {c: [ {d: 2} ], e: 2 }, i: [ 2 ] }

该函数应该删除空值、空对象和空数组。有什么优雅的方法吗?

最佳答案

这是一个递归清理对象的函数。它将深入循环所有属性并删除空值、空数组和空对象:

cleanUpObject(jsonObject: object): object {

Object.keys(jsonObject).forEach(function (key, index) {
const currentObj = jsonObject[key]

if (_.isNull(currentObj)) {
delete jsonObject[key]
} else if (_.isObject(currentObj)) {
if (_.isArray(currentObj)) {
if (!currentObj.length) {
delete jsonObject[key]
} else {
const cleanupArrayObj = []
for (const obj of currentObj) {
if (!_.isNull(obj)) {
const cleanObj = this.cleanUpJson(obj)
if (!_.isEmpty(cleanObj)) {
cleanupArrayObj.push(cleanObj)
}
}
}
if (!cleanupArrayObj.length) {
delete jsonObject[key]
} else {
jsonObject[key] = cleanupArrayObj
}
}
} else {
if (_.isEmpty(Object.keys(jsonObject[key]))) {
delete jsonObject[key]
} else {
jsonObject[key] = this.cleanUpJson(currentObj)

if (_.isEmpty(Object.keys(jsonObject[key]))) {
delete jsonObject[key]
}
}
}
}
}, this)

return jsonObject
}

关于javascript - 如何从对象中深度移除空值、空对象和空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52175209/

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