function convertObjectToList(obj) {
var innerArr= [];
var outerArr=[];
for (var prop in obj) {
innerArr.push(prop);
innerArr.push(obj[prop]);
console.log(innerArr);
outerArr.push(innerArr);
console.log(outerArr);
} return outerArr;
}
convertObjectToList({
name: 'Holly',
age: 35,
})
有人可以帮我弄清楚for循环中发生了什么吗?
问:我的问题是第二轮:outerArr[0]= [ ‘name’, ‘Holly’ ], but the console shows me outerArr[0]= [ ‘name’, ‘Holly’, ‘age’, 35 ]
实际输出:
1.第一轮:innerArr=[ ‘name’, ‘Holly’ ] & outerArr = [ [ ‘name’, ‘Holly’ ] ]
2.第二轮:
innerArr=[ ‘name’, ‘Holly’, ‘age’, 35 ] & outerArr=[ [ ‘name’, ‘Holly’, ‘age’, 35 ],[ ‘name’, ‘Holly’, ‘age’, 35 ] ]
但我考虑过:outerArr= [ [ ‘name’, ‘Holly’ ], [ ‘name’, ‘Holly’, ‘age’, 35 ] ]
答案 0 :(得分:2)
您可以在循环中创建内部数组的新副本。
function convertObjectToList(obj) {
var outerArr=[];
var innerArr = [];
var i = 0;
for (var prop in obj) {
innerArr = Array.slice(innerArr);
innerArr.push(prop);
innerArr.push(obj[prop]);
outerArr.push(innerArr);
} return outerArr;
}
console.log(convertObjectToList({
name: 'Holly',
age: 35,
}));

答案 1 :(得分:0)
使用toString()将数组转换为字符串,然后将其存储在外部数组
中
function convertObjectToList(obj) {
var innerArr = [];
var outerArr = [];
for (var prop in obj) {
var arry = []
innerArr.push(prop.toString());
innerArr.push(obj[prop].toString());
arry.push(innerArr.toString())
outerArr.push(arry);
}
console.log(outerArr);
return outerArr;
}
convertObjectToList({
name: 'Holly',
age: 35,
})
实际上for (var prop in obj) {}
是一个foreach循环,它将导航obj
数组的每个元素
答案 2 :(得分:0)
您没有推送数组的深层副本,而是再次推送同一个数组。 outerArr的每个元素都包含innerArr 我想你想要做的是为每次迭代创建一个新的innerArr。
function convertObjectToList(obj) {
var outerArr=[];
for (var prop in obj) {
var innerArr= [];
innerArr.push(prop);
innerArr.push(obj[prop]);
outerArr.push(innerArr);
} return outerArr;
}
convertObjectToList({
name: 'Holly',
age: 35,
})