JavaScript中循环的两层`

JavaScript中循环的两层`,javascript,Javascript,函数convertObjectToList(obj){ var innerArr=[]; var outerar=[]; 用于(obj中的var prop){ 内推(支撑); 内装推力(obj[prop]); console.log(innerArr); 外推(内推); 控制台日志(外部); }返回外层; } 反对者({ 名字:'霍莉', 年龄:35岁, })使用toString()将数组转换为字符串,然后将其存储在外部数组中 函数convertObjectToList(obj){ var i

函数convertObjectToList(obj){
var innerArr=[];
var outerar=[];
用于(obj中的var prop){
内推(支撑);
内装推力(obj[prop]);
console.log(innerArr);
外推(内推);
控制台日志(外部);
}返回外层;
}
反对者({
名字:'霍莉',
年龄:35岁,
})
使用toString()将数组转换为字符串,然后将其存储在外部数组中

函数convertObjectToList(obj){
var innerArr=[];
var outerar=[];
对于(obj中的var prop){
var arry=[]
内部arr.push(prop.toString());
innerArr.push(对象[prop].toString());
arry.push(innerArr.toString())
外推(arry);
}
控制台日志(外部);
返回外层;
}
反对者({
名字:'霍莉',
年龄:35岁,

})
您不是在推送数组的深层副本,而是再次推送相同的数组。外层的每个元素将包含内层。
我认为您要做的是为每个迭代创建一个新的innerArr

函数convertObjectToList(obj){
var outerar=[];
用于(obj中的var prop){
var innerArr=[];
内推(支撑);
内装推力(obj[prop]);
外推(内推);
}返回外层;
}
反对者({
名字:'霍莉',
年龄:35岁,

})
您可以在循环中创建内部数组的新副本

函数convertObjectToList(obj){
var outerar=[];
var innerArr=[];
var i=0;
用于(obj中的var prop){
innerArr=Array.slice(innerArr);
内推(支撑);
内装推力(obj[prop]);
外推(内推);
}返回外层;
}
console.log(convertObjectToList({
名字:'霍莉',
年龄:35岁,

}));谢谢。但我的问题是,当forEach循环第二次运行时,为什么Outerar[0]将从['name','Holly']更改为['name','Holly','age',35]?Outerar包含对innerArr的引用,而不是副本。如果您需要副本,可以使用
outerar.push(innerArr.slice())
谢谢!我明白了它只包含一个引用而不是一个副本——击中我的头!