首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >递归删除嵌套json对象中包含空数组的对象

递归删除嵌套json对象中包含空数组的对象
EN

Stack Overflow用户
提问于 2016-07-12 16:14:26
回答 0查看 250关注 0票数 1

我想动态删除包含空数组的json对象。我找到了这个链接similar question here。但在我的情况下,这对我不起作用。

假设我有一个JSON对象:

代码语言:javascript
复制
{"op":"1","parameters":[{"op":"2-1","parameters":[]},{"op":"2-2","parameters":[1,2]}]}

我已经写了一个示例代码来递归地做这些事情:

代码语言:javascript
复制
function removeEmptyArray(cJSON){
    if(!cJSON)
        return cJSON;

    for(var i=cJSON.parameters.length-1;i>=0;i--){
        if(!(cJSON.parameters[i].parameters instanceof Array))
            continue;
        if(cJSON.parameters[i].parameters.length==0){
            cJSON.parameters.splice(i,1);
        }else{
            cJSON.parameters[i] = removeEmptyArray(cJSON.parameters[i]);
        }
    }
    return cJSON;

}

预期的结果是{"op":"1","parameters":[{"op":"2-2","parameters":[1,2]}]},代码运行良好。

但是当我有这个obj的时候:

代码语言:javascript
复制
{"op":"1","parameters":[{"op":"2-1","parameters":[{"op":"3-1","parameters":[]}]},{"op":"2-2","parameters":[1,2,3]}]}

输出为{"op":"1","parameters":[{"op":"2-1","parameters":[]},{"op":"2-2","parameters":[1,2,3]}]}

显然,它不会动态删除"op“为"2-1”的json obj。

那么如何用一种优雅的方式,使用纯javascript来解决它呢?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38323357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档