У меня есть вложенные данные json. Он содержит некоторые объекты со счетом 0, которые необходимо удалить из JSON. Данные приведены ниже
const data = {
"name": "A",
"desc": "a",
"count": 2,
"children": [
{
"name": "A1",
"desc": "a1",
"count": 2,
"children": [
{
"name": "A1-sub1",
"desc": "a1-sub1",
"count": 2,
},
{
"name": "A1-sub2",
"desc": "a1-sub2",
"count": 0,
},
]
},
{
"name": "A2",
"desc": "a2",
"count": 0
}
]
}
Здесь у объекта A1-sub2 и A2 есть счетчик 0, который необходимо удалить. Я попытался удалить весь объект, но он не работал. Мой код выглядит следующим образом:
const deepCopy = (arr) => {
let copy = [];
arr.forEach(elem => {
if(Array.isArray(elem)){
copy.push(deepCopy(elem))
}else{
if (typeof elem === 'object') {
copy.push(deepCopyObject(elem))
} else {
copy.push(elem)
}
}
})
return copy;
};
const deepCopyObject = (obj) => {
let tempObj = {};
for (let [key, value] of Object.entries(obj)) {
if(key === "count"){
if(obj[key] === 0){
Object.keys(obj).forEach(function(key) {
delete obj[key];
});
}
}
if (Array.isArray(value)) {
tempObj[key] = deepCopy(value);
} else {
if (typeof value === 'object') {
tempObj[key] = deepCopyObject(value);
} else {
tempObj[key] = value
}
}
}
return tempObj;
};
console.log(deepCopyObject(data));
Ожидаемый результат должен быть
const result = {
"name": "A",
"desc": "a",
"count": 2,
"children": [
{
"name": "A1",
"desc": "a1",
"count": 2,
"children": [
{
"name": "A1-sub1",
"desc": "a1-sub1",
"count": 2,
}
]
}
]
}