我有练习题,我需要复制JSON.stringify,而不是实际使用JSON.stringify。当你输入函数的对象时,我无法获得返回值。例如,如果您插入
var obj = {a:1, b:2, c:3};
JSON.stringify (obj); // returns "{"a":1,"b":2,"c":3}"
话虽这么说,我试图使用for循环将属性设置为正在传递的对象的字符串值。我这样做只是为了一个对象容器,但该函数实际上应该与你通过它的任何东西一起工作,它会JSON.stringify它。
var stringifyJSON = function(obj) {
var newObj = {};
for (var prop in obj){
newObj ={
stringProp:obj[prop]
};
}
return newObj;
};
我想我的阵列部分已经缩减了。对象遍历我很糟糕。这里的结果是'Object {stringProp:3}'。这是递归问题集中的实践问题,所以我认为他们不希望我使用循环。我只是试图通过循环来使它变得更简单,然后我会尝试通过递归来复制它。
任何帮助将不胜感激!
谢谢, 乙
答案 0 :(得分:0)
由于这是一个练习题,我只是试着指出你正确的方向:
您需要在代码中使用循环,因为您需要以递归方式循环遍历对象中的每个属性。
至于递归部分,首先需要定义基本情况'。基于输入的条件是什么,不应该导致递归调用?当论证不是一个对象时,我会给你一个很大的暗示。
棘手的部分是确定如何从递归调用中附加结果字符串。
一些基本的模板代码让您开始:
function myStringify( obj ) {
if ( typeof obj !== 'object' ) {
// base case
return ""+obj;
}
var str = "";
for ( var prop in obj ) {
if ( obj.hasOwnProperty( prop ) ) {
// recursive calls and string formatting magic
}
}
return str;
}