js for循环怎么实现如下输出?

新手上路,请多包涵

js for循环怎么实现如下输出

let arr = new Array(10)
for(let i = 0; i < arr.length; i++){
  // 循环打印输出如下 
  // [1,1,1,2,2,2,3,3,3,4]  三个三个一组
  // [1,2,3,1,2,3,1,2,3,1]  1 2 3一组
}
阅读 1.5k
avatarAI BotBETA

要实现这样的输出,你可以通过嵌套循环来实现。外层循环控制组数,内层循环控制每组内的数字。下面是一个示例代码,展示了如何使用JavaScript的for循环来实现这两种输出:

let arr = new Array(10);

// 输出 [1,1,1,2,2,2,3,3,3,4]
for (let i = 1; i <= 4; i++) {
  for (let j = 0; j < 3 && i <= 4; j++) {
    arr[j + (i - 1) * 3] = i;
  }
}
console.log(arr); // [1, 1, 1, 2, 2, 2, 3, 3, 3, 4]

// 重置数组
arr = new Array(10);

// 输出 [1,2,3,1,2,3,1,2,3,1]
for (let i = 0; i < 10; i++) {
  arr[i] = Math.ceil((i + 1) / 3);
}
console.log(arr); // [1, 2, 3, 1, 2, 3, 1, 2, 3, 1]

在第一个输出中,外层循环控制从1到4的循环,内层循环则在每次外层循环时,将当前循环变量i的值赋给数组arr的相应位置,位置计算方式为(i - 1) * 3 + j,这样就实现了每三个元素为一组,每组元素值相同的输出。

在第二个输出中,使用Math.ceil((i + 1) / 3)来计算每个位置的值。这个表达式的意思是将当前位置i加1后除以3,并使用Math.ceil函数向上取整。由于i从0开始,所以前三个位置的值为1,接下来的三个位置的值为2,以此类推,实现了1、2、3一组循环输出的效果。

3 个回答
console.log(new Array(10).fill(0).map((_, i) => Math.ceil((i + 1) / 3)))

console.log(new Array(10).fill(0).map((_, i) => (i % 3) + 1))
头像
🇱 小亮
    2
    新疆克拉玛依市白碱滩区
    新手上路,请多包涵
    let arr1 = new Array(10).fill(0); // 创建长度为10的数组,并填充为0
    let arr2 = new Array(10).fill(0);
    
    // 第一种情况:三个三个一组
    for (let i = 0; i < arr1.length; i++) {
      arr1[i] = Math.floor(i / 3) + 1; // 通过除以3取整来确定每组的数字
    }
    console.log(arr1); // 输出 [1, 1, 1, 2, 2, 2, 3, 3, 3, 4]
    
    // 第二种情况:1 2 3一组
    for (let i = 0; i < arr2.length; i++) {
      arr2[i] = (i % 3) + 1; // 使用取余运算确定每组的数字
    }
    console.log(arr2); // 输出 [1, 2, 3, 1, 2, 3, 1, 2, 3, 1]

    根据你的需求,可以编写以下两种不同逻辑的JavaScript for循环实现:
    情况一:输出[1,1,1,2,2,2,3,3,3,4]

    let arr = new Array(10);
    let groupNum = 0;
    for (let i = 0; i < arr.length; i++) {
      arr[i] = Math.floor((i / 3) + 1); // 计算索引对应组内的数字
    }
    
    console.log(arr);
    

    情况二:输出[1,2,3,1,2,3,1,2,3,1]

    let arr = new Array(10);
    let cycleLength = 3;
    for (let i = 0; i < arr.length; i++) {
      arr[i] = (i % cycleLength) + 1; // 计算索引模3的结果加1,得到1到3的循环数字
    }
    
    console.log(arr);
    

    在这两种情况下,我们都没有直接对数组进行初始化,而是通过循环直接修改数组元素的值,达到你所需要的效果。第一种情况是根据索引除以3取整数部分加1得到结果,第二种情况是根据索引对3取模后加1得到循环数字。

    撰写回答
    你尚未登录,登录后可以
    • 和开发者交流问题的细节
    • 关注并接收问题和回答的更新提醒
    • 参与内容的编辑和改进,让解决方法与时俱进
    推荐问题
    宣传栏