递归的问题。

qq290032431 2013-06-24 10:25:55
想给json数据的key值加引号,写的代码如下,

var jsonT = {
testUn7: {
data: "test",
data1:"test2s"
}
};
function test(obj) {
var str = "";
var strKeyValue="";
for (var i in obj) {
strKeyValue = typeof (obj[i]) == "object" ?"{"+ test(obj[i]) +"}": "'" + obj[i] + "'";
str += "'" + i + "'" + ":" + strKeyValue + ",";
}
str = str.length > 0 ? str.substr(0, str.length - 1) : "";
console.log(str);
}

预想的结果为:'testUn7':{'data':'test','data1':'test''test2s' } ,实际结果为:
'testUn7':{undefined} ,麻烦帮忙看看,问题出在哪里了,怎么改动下才能有如期效果,谢谢了。
...全文
127 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq290032431 2013-06-24
  • 打赏
  • 举报
回复
刚刚我把递归的抽出来了,但是代码重复了,纠结。

function test2(obj) {
        var str = "";
        for (var i in obj) {
            strKeyValue = typeof (obj[i]) == "object" ? "{" + test2(obj[i]) + "}" : "'" + obj[i] + "'";
            str += "'" + i + "'" + ":" + strKeyValue + ",";
        }
        str = str.length > 0 ? str.substr(0, str.length - 1) : "";
        return str;
    }
    function test(obj) {
        var str = "";
        var strKeyValue="";
        for (var i in obj) {
            strKeyValue = typeof (obj[i]) == "object" ? "{" + test2(obj[i]) + "}" : "'" + obj[i] + "'";
            str += "'" + i + "'" + ":" + strKeyValue + ",";
        }
        str = str.length > 0 ? str.substr(0, str.length - 1) : "";
        console.log(str);
    }
效果倒是如期的效果。有啥改进办法没

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧