(我知道过去有人问过类似的问题,但我找不到满意的答案......抱歉!)
大家好
我在 for 循环中使用 for 循环,生成新数组。
每次运行内部循环时,我都想将结果数组推送到预先创建的空数组中。我期待一个数组数组。
当我通过控制台记录在内部循环中生成的每个数组进行测试时,我期望的所有数组都被创建了👍。 但是,奇怪的是,当我尝试 .push() 每个到预先创建的空数组时,我最终得到一个充满索引号的数组,而不是一个数组 (???) 。
如果有人设法遵循该描述,请帮助!!非常感谢!
const isColourful = num => {
const arr = num.toString().split('');
const blankArr = [];
const arrayOfArraysMaker = arr => {
for (let c = 0; c < arr.length; c++) {
for (let i = 0; i < arr.length; i++) {
if (i + c > 0) {
x = i + c;
} else {
x = undefined;
}
const workingArr = blankArr.push(arr.slice(i, x));
console.log(blankArr);
}
}
};
arrayOfArraysMaker(arr);
return arr;
};
console.log(isColourful(2457));
返回数字 1 到 16 的列表,而我期望的是以下数组的数组:
[ '2', '4', '5', '7' ]
[]
[]
[]
[ '2' ]
[ '4' ]
[ '5' ]
[ '7' ]
[ '2', '4' ]
[ '4', '5' ]
[ '5', '7' ]
[ '7' ]
[ '2', '4', '5' ]
[ '4', '5', '7' ]
[ '5', '7' ]
[ '7' ]
最佳答案
您的代码有效,但我想我明白了您可能感到困惑的地方。
const workingArr = blankArr.push(arr.slice(i, x));
这一行和你想的不一样。
Array 的 push 方法返回数组的新长度 (documentation here)
如果您使用的是 push
的返回值,那么每次对该数组调用 push()
时,您都会得到一个递增的数字,因为该数组得到每次加长一项。
你不应该在这里使用 push()
的返回值,因为它修改了原始数组。
关于javascript - 如何将 for 循环内生成的数组推送到循环外的空数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59432554/