如何在JavaScript中通过for循环按输入值设置输出数组长度?
解决指定长度偶数数组生成问题
核心问题是你原来的循环逻辑搞错了——你可能是在判断数值是否小于输入值,而不是控制循环执行次数等于输入的长度。要生成长度为n的偶数数组,关键是让循环跑n次,每次生成对应的第k个偶数(即2*k,k从1到n)。
以下是几种可行的实现方式:
方式一:基于次数的for循环
直接循环指定长度的次数,每次计算对应的偶数:
function getEvenArray(length) { const evenArr = []; for (let i = 1; i <= length; i++) { evenArr.push(i * 2); } return evenArr; } // 测试输入10 console.log(getEvenArray(10)); // 输出 [2,4,6,8,10,12,14,16,18,20]
方式二:通过数组长度控制循环
从2开始累加偶数,直到数组长度达到要求:
function getEvenArray(length) { const evenArr = []; let currentEven = 2; for (; evenArr.length < length; currentEven += 2) { evenArr.push(currentEven); } return evenArr; }
为什么原来的代码不对?
假设你原来的代码是类似这样的:
// 错误示例 function getEvenArray(n) { const evenArr = []; for (let i = 2; i < n; i += 2) { evenArr.push(i); } return evenArr; }
这里循环条件是i < n,输入10时,i只会取2、4、6、8,数组长度只有4,和你要的长度10完全不符。只要把逻辑从数值小于输入值改成循环次数等于输入长度,问题就解决了。
内容的提问来源于stack exchange,提问作者Revingerz
相关产品推荐
相关产品推荐

