gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:54:06 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com