【问题标题】:Replicating JSON.Stringify复制 JSON.Stringify
【发布时间】:2014-09-08 16:33:25
【问题描述】:

我有一个练习问题,我需要复制 JSON.stringify,而不是实际使用 JSON.stringify。当它是您输入到函数中的对象时,我无法获取返回值。例如,如果你插入

var obj = {a:1, b:2, c:3};
JSON.stringify (obj); // returns "{"a":1,"b":2,"c":3}"

话虽如此,我试图使用 for in 循环将属性设置为正在传递的对象的字符串值。我只是为一个对象容器这样做,但该函数实际上应该与你通过它的任何东西一起工作,并且它会 JSON.stringify 它。

var stringifyJSON = function(obj) {
 var newObj = {};
 for (var prop in obj){
    newObj ={
    stringProp:obj[prop]
    };
}
 return newObj;
};

我认为我的数组部分已关闭。我对对象遍历非常糟糕。这里的结果是“对象 {stringProp:3}”。这是递归问题集中的一个练习问题,所以我认为他们不希望我使用循环。我只是想通过循环让它更简单一些,然后我会尝试通过递归来复制它。

任何帮助将不胜感激!

谢谢, 乙

【问题讨论】:

    标签: json recursion stringify


    【解决方案1】:

    由于这是一个练习题,我将尝试为您指出正确的方向:

    您将需要在代码中进行循环,因为您需要递归循环对象中的每个属性。

    至于递归部分,首先您需要定义您的“基本情况”。基于不应导致递归调用的输入的条件是什么?我给你一个很大的提示,当参数不是对象时。

    对您来说棘手的部分是确定如何从递归调用中附加结果字符串。

    一些基本的模板代码让你开始:

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

    【讨论】:

      猜你喜欢
      • 2013-01-15
      • 2014-02-02
      • 2022-01-20
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 2013-08-21
      相关资源
      最近更新 更多