Репликация JSON.Stringify

У меня проблема с практикой, и мне нужно реплицировать 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}». Это практическая проблема в наборе задач рекурсии, поэтому я думаю, что они не хотят, чтобы я использовал цикл. Я просто пытался сделать это немного проще, зацикливая его, а затем я пытался воспроизвести его с помощью рекурсии.

Любая помощь будет оценена по достоинству!

Спасибо, Б


person BMAC    schedule 17.07.2014    source источник


Ответы (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;
}
person kbirk    schedule 17.07.2014