这里有一个小问题。 我正在尝试创建一个函数来显示多个对象的内容。 因此,我创建了以下代码,它可以工作,但由于某种原因它确实在第一个对象之后停止,我只是不明白为什么会发生这种情况:/
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);
最佳答案
问题在于所有变量都是全局的。
使 indexArgument
和 indexObject
本地化很容易(在它们前面添加 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/