【发布时间】:2021-07-19 08:22:38
【问题描述】:
对于一个作业,我正在尝试以递归方式实现 JSON.stringify 功能。
但是,我当前的方法 - 尝试直接返回连接对象的键/值对的字符串 - 不起作用,因为括号和逗号放错了位置。理想情况下,我将能够递归地构造一个数组,然后用逗号连接元素,但我不确定如何做到这一点。有什么建议或替代方法吗?
谢谢!
var stringifyJSON = function(obj) {
if (typeof(obj) == "object") {
var newValue;
var objKeys = Object.keys(obj);
if (Object.keys(obj).length === 0) {
return "";
}
else if (Object.keys(obj).length !== 0) {
var key = (typeof(objKeys[0]) == "string") ? '"' + objKeys[0] + '"' : objKeys[0];
var value = (typeof(obj[objKeys[0]]) == "string") ? '"' + obj[objKeys[0]] + '"' : obj[objKeys[0]];
newValue = key + ":" + value;
delete obj[objKeys[0]];
}
return "{" + newValue + "," + stringifyJSON(obj) + "}";
}
};
【问题讨论】:
-
首先实现一个只接受字符串、数字和布尔值的函数。然后添加对数组和对象的支持会容易得多。
-
很好的建议,谢谢!
标签: javascript json recursion