javascript - 显示多个对象的内容?

标签 javascript recursion javascript-objects

这里有一个小问题。 我正在尝试创建一个函数来显示多个对象的内容。 因此,我创建了以下代码,它可以工作,但由于某种原因它确实在第一个对象之后停止,我只是不明白为什么会发生这种情况:/

var space = '-';

function showObjects() {

    for (indexArgument = 0; indexArgument < arguments.length; indexArgument++) {

        for (indexObject in arguments[indexArgument]) {

            console.log(space + indexObject + ' : ' + arguments[indexArgument][indexObject]);

            if ( typeof arguments[indexArgument][indexObject] === 'object') {

                space += '-';
                showObjects( arguments[indexArgument][indexObject] );

            }

        }

    }

}

var object1 = { a : 1, b : 2 , data : { a : 12 } };
var object2 = { a : 6, b : 9 , data : { a : 17 } };

showObjects(object1, object2);

最佳答案

问题在于所有变量都是全局的
使 indexArgumentindexObject 本地化很容易(在它们前面添加 var) - 但要使您的代码与 一起工作space 变量,你必须稍微重组你的代码。

我建议将“参数”和“递归”逻辑分开,如下所示:

function showObjects() {

    // loop through all arguments and call the recursive function
    for (var indexArgument = 0; indexArgument < arguments.length; indexArgument++) {
        // call the recursive function (with a additional space parameter)
        showObject(arguments[indexArgument], '-');
    }

    // the recursive function 
    // (handles only one object, with the local space variable)
    function showObject(object, space) {
        for (var indexObject in object) {
            console.log(space + indexObject + ' : ' + object[indexObject]);
            if ( typeof object[indexObject] === 'object') {
                // recursive call of this function
                showObject( object[indexObject], space + '-' );
            }
        }
    }

}

var object1 = { a : 1, b : 2 , data : { a : 12 } };
var object2 = { a : 6, b : 9 , data : { a : 17 } };

showObjects(object1, object2);

关于javascript - 显示多个对象的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26314467/

相关文章:

javascript - 导航栏卡在幻灯片 html 下

javascript - 在 Lodash 中使用 TTL 功能构建缓存

javascript - 将 bool 值分配给对象内的键

javascript - 如何过滤对象的所有属性?

javascript - Jquery DataTable 切换问题 - 重复的搜索栏

php - 递归函数对于创建分层选择列表来说太慢

java - 如何在不使用运算符的情况下编写 LessThan 方法

javascript - 如何在动态生成的 HTML 表中停止递归

javascript - 从 XML 源创建 JavaScript 对象数组

javascript - 将对象分配给 undefined 和 delete 之间的区别