Lea*_*ner 6 javascript recursion json javascript-objects
我有一个树对象如下,我试图删除项数组属性,如果它是空的.我不确定最好的方法吗?
我正在考虑循环键,检查属性,然后删除使用delete myJSONObject[prop]...欢迎任何想法/想法?
[{
text: "TreeRoot",
items: [{
text: "Subgroup1",
items: []
}, {
text: "Subgroup2",
items: []
}, {
text: "Subgroup3",
items: [],
items: [{
text: "subgroup5",
items: [{
text: "subgroup6",
items: [{
text: "subgroup7",
items: [{
text: "subgroup8",
items: []
}]
}]
}]
}]
}]
}]
Run Code Online (Sandbox Code Playgroud)
这应该可以完成工作(ES5):
function removeEmpty(obj) {
Object.keys(obj).forEach(function(key) {
(key === 'items' && obj[key].length === 0) && delete obj[key] ||
(obj[key] && typeof obj[key] === 'object') && removeEmpty(obj[key])
});
return obj;
};
Run Code Online (Sandbox Code Playgroud)
ES6中同样:
const removeEmpty = (obj) => {
Object.keys(obj).forEach(key =>
(key === 'items' && obj[key].length === 0) && delete obj[key] ||
(obj[key] && typeof obj[key] === 'object') && removeEmpty(obj[key])
);
return obj;
};
Run Code Online (Sandbox Code Playgroud)
您可以使用递归算法,在每个步骤中删除items数组并返回,或者递归地处理数组的每个单独对象。
我也会尝试在服务器端执行此操作。它将节省大量的复杂性、内存和处理时间。通常有多种方法可以从 JSON 编码字符串中“排除”空数组。
| 归档时间: |
|
| 查看次数: |
6555 次 |
| 最近记录: |