Sanu0074
@Sanu0074

Как перестроить объект чтобы избавиться от ошибки «Converting circular structure to JSON»?

Есть объект data, который нужно отсортировать (меню с одной ступенью вложенности). Делаю это таким методом:
sortingData (data){
    var out = [];
    for(let i in data){
        if(!data[i].pid){
            out.push(data[i]);
        }
    }

    for(var i in data){
        for(var j in out){
            if(out[j].id == data[i].pid){
                if(!$.isset(out[j].childs)){
                    out[j].childs = [];
                }
                out[j].childs.push(data[i]);
            }
        }
    }

    return JSON.stringify(out);
}

На этапе конвертирования в json получаю ошибку: Converting circular structure to JSON.

Я понял что дело тут в циклических ссылках друг на друга в объекте data, но, не пойму как мне избавиться от них чтобы получить нормальный объект out, как бы я не создавал новый объект, все-равно в json он его не хочет конвертить. Вопрос в том, как создать объект out, чтобы он не содержал в себе циклические ссылки?
  • Вопрос задан
  • 1472 просмотра
Решения вопроса 1
Sanu0074
@Sanu0074 Автор вопроса
Короче говоря, не стал я возиться и просто по-клонировал объекты data[i] когда делал пуш в out:
function cloneObject(obj) {
            var key, clone = {};
            for(key in obj) if(obj.hasOwnProperty(key)) clone[key] = obj[key];
            return clone;
        }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы