staffID
@staffID

Перебор древовидного объекта?

Нужна функция типо parse_args с рекурсией(или без неё)

Например есть одна функция:

function iu( new_options ) {
//функция парсит аргументы
var res_options = parse_args( new_options, default_options );
}

//Должна уметь обходить дерево. Пока получилось, что-то типо
var defaults = { 'a': { 'b': 'c' } },
        options = { 'a': { 'c': { 'd': 'v' } } },
function parse_args( new_options, default_options ) {
        i = 0,
        new_args = {},
        res = {};
    if ( typeof default_options === 'object' && typeof new_options === 'object' ) {
        while ( true ) {
            new_args = efault_options;
            for ( var obj in options ) {
                options = options[ obj ];
                res[ obj ] = options;
            }
            if ( typeof options !== 'object' )
                break;
        }
return res;
    }


Не могу понять как, обратно собирать древовидный объект.
В res получается, только Object {a: {c: {d: "v"}}, c: {d: "v"}, d: "v"},
А должно Object {a: {c: {d: "v"}},{ 'b': 'c' }}

Кто может помочь?
  • Вопрос задан
  • 1952 просмотра
Пригласить эксперта
Ответы на вопрос 1
AlexXYZ
@AlexXYZ
O Keep Clear O
Честно говоря меня напрягают следующие вещи в вашем коде:

1. options = options[ obj ]; // <--- WTF??? Это что за извращённый способ рекурсии?

2. Цикл for ( var obj in options ) { без проверки владения:
if( options.hasOwnProperty( obj ) ){
... бизнес-логика ...
}

3. Самое главное. КАК ПРОИЗВОДИТСЯ РЕКУРСИЯ??? (Видимо ошибка из п.1). Нигде внутри parse_args не производится вызов её самой!
Конец бородатого анекдота: "Думай, Петька, думай"!
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы