((我知道过去曾问过类似的问题,但我找不到令人满意的答案...对不起!)
大家好,
我在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));
此行不执行您可能在想的事情。
数组的push方法返回数组的新长度(documentation here)
如果使用的是push
的返回值,那么每次在该数组上调用push()
时,您得到的数字都会增加一个,因为该数组每次都会增加一个项目。
这里您完全不应使用push()
的返回值,因为它会修改原始数组。