复制JSON.Stringify

时间:2014-07-17 17:17:11

标签: json recursion stringify

我有练习题,我需要复制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}'。这是递归问题集中的实践问题,所以我认为他们不希望我使用循环。我只是试图通过循环来使它变得更简单,然后我会尝试通过递归来复制它。

任何帮助将不胜感激!

谢谢, 乙

1 个答案:

答案 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;
}