吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 926|回复: 9
收起左侧

[求助] js怎么实现数组轮询6次后输出再接着轮训输出直到轮询完毕

[复制链接]
qinguangcan 发表于 2023-4-10 22:46
45吾爱币
本帖最后由 qinguangcan 于 2023-4-11 09:51 编辑

数组里有多行,数量不固定
一次输出太多了,就想轮询6次行后先输出,再接着轮询下面的
直到轮询完毕。
不知道怎么写,求大神指教。

感谢各位大神,有了这么多答案,每条都可以,不好采纳啊。只能下午下班回家结合源码运行后再采纳了。

最佳答案

查看完整内容

使用一个for循环来遍历数组,每次输出6个元素,然后再继续遍历直到数组遍历完毕.示例代码:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Xrhello 发表于 2023-4-10 22:46
使用一个for循环来遍历数组,每次输出6个元素,然后再继续遍历直到数组遍历完毕.示例代码:
[JavaScript] 纯文本查看 复制代码
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let i = 0; i < arr.length; i += 6) {
    console.log(arr.slice(i, i + 6));
}
MakoStar 发表于 2023-4-11 04:18
来学习学习,看看我的答辩:
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];

function test(arr) {
    const arrIterator = arr.entries();
    return function test2() {
        let timer = setTimeout(() => {
            for (let i = 6; i > 0; i--) {
                const resultArr = arrIterator.next().value;
                if (resultArr === undefined) {
                    clearTimeout(timer);
                    return;
                };
                console.log(resultArr[1]);
            }
            console.log("-------------------");
            clearTimeout(timer);
            test2()
        }, 3000);
    };
}

test(arr)()
cnwutianhao 发表于 2023-4-11 08:25
const arr = [
  [1,2,3],
  [4,5,6],
  [7,8,9],
  [10,11,12],
  [13,14,15],
  [16,17,18]
];

let counter = 0;

for (let i = 0; i < arr.length; i++) {
  for (let j = 0; j < arr[i].length; j++) {
    console.log(arr[i][j]);

    counter++;
    if (counter === 6) {
      console.log('Output');
      counter = 0;
    }
  }
}

// 如果最后一次遍历不足6个元素,也需要输出一次
if (counter !== 0) {
  console.log('Output');
}
qq231 发表于 2023-4-11 09:01
本帖最后由 qq231 于 2023-4-11 09:02 编辑

[JavaScript] 纯文本查看 复制代码
let arr=[1,2,3,4,5,6]
let count=0
while (arr.length>0){
let item=arr.shift();//取数组第一个
count++;
if(count==7){
console.log('输出结果',count)
count=0;
}
}
console.log('轮询完毕')
bclx 发表于 2023-4-11 09:02
您可以使用一个计数器来跟踪已经轮询的次数,并在达到特定阈值时输出数组。然后重置计数器并继续进行轮询直到完成。

以下是一个示例代码:

```javascript
let counter = 0;
const threshold = 6;
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function pollArray() {
  if (counter === threshold) {
    console.log(arr);
    counter = 0; // 重置计数器
  }
  const element = arr.shift();
  console.log(element); // 输出当前元素
  arr.push(element); // 将当前元素放回数组末尾
  counter++; // 更新计数器
  if (arr.length > 0) {
    setTimeout(pollArray, 1000); // 每秒执行一次轮询
  }
}

pollArray(); // 开始执行轮询
```

这个代码会每秒钟输出一个数组元素,然后在第六个元素输出后输出整个数组,然后继续每秒钟输出其余的元素直到数组结束。
godonlyknow 发表于 2023-4-11 09:15
本帖最后由 林逸欣 于 2023-4-11 09:25 编辑

该函数接受两个参数,第一个参数是需要输出的数组,第二个参数是每次输出的行数。函数内部使用定时器来控制输出的节奏,每隔一秒输出指定数量的行,当全部输出完毕后清除定时器。你可以根据需要修改输出的时间间隔和行数。

[JavaScript] 纯文本查看 复制代码
function outputMultiLines(arr, num) {
        let index = 0;
        const timer = setInterval(function() {
                for (let i = 0; i < num && index < arr.length; i++) {
                        console.log(arr[index]);
                        index++;
                }
                if (index >= arr.length) {
                        clearInterval(timer);
                }
        }, 1000);
} 
// 调用示例
const arr = ['line1', 'line2', 'line3', 'line4', 'line5', 'line6', 'line7', 'line8', 'line9'];
outputMultiLines(arr, 6);
HappyCrazy 发表于 2023-4-11 09:24
[JavaScript] 纯文本查看 复制代码
const arr = [1, 2, 3, 4, 5]; // 假设要轮询的数组是 [1, 2, 3, 4, 5]
const interval = 6; // 每隔 interval 次元素打印一个空行
let count = 0; // 计数器,记录已经轮询了几次

// 定义一个函数,用于打印当前轮询的元素
function printCurrentElement() {
  const index = count % arr.length; // 计算当前元素的下标
  console.log(arr[index]); // 打印当前元素
}

// 轮询数组,每轮询一次就打印当前元素并将计数器加 1
for (let i = 0; i < arr.length * 2; i++) {
  printCurrentElement();
  count++;
  
  // 如果已经轮询了 interval 次,则打印一个空行,并将计数器清零
  if (count === interval) {
    console.log('');
    count = 0;
  }
}
wuleiwushen 发表于 2023-4-11 09:27
[JavaScript] 纯文本查看 复制代码
let arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, 16, 17, 18, 19]

function test(arr, count){
  for(let i = 0; i < Math.ceil(arr.length / 6); i++){
    console.log( arr.slice(i * count, (i + 1) * count) );
  }
}

test(arr, 6)
zbr878458173 发表于 2023-4-11 09:33
让我们来抗抗chatgpt的答案
要实现数组轮询6次后输出,再接着轮询输出直到轮询完毕,我们可以通过以下步骤来实现:
  • 创建一个数组作为轮询的数据源。
  • 定义一个轮询函数,该函数接受两个参数:数组和轮询次数。
  • 在轮询函数中,使用一个for循环来执行轮询操作,每次循环通过取余数的方式计算当前轮询的数组下标。
  • 当循环次数超过6次时,输出当前轮询到的元素。
  • 轮询结束后,继续输出剩余的元素。
下面是实现该功能的JavaScript代码示例:
[JavaScript] 纯文本查看 复制代码
function arrayPolling(arr, times) {
    // 计算数组长度
    const len = arr.length;
    // 轮询次数
    let count = 0;
    // 输出结果
    const result = [];
    // 执行轮询
    for (let i = 0; i < times; i++) {
        // 计算当前轮询的数组下标
        const index = i % len;
        // 将当前轮询到的元素加入到结果中
        result.push(arr[index]);
        // 增加轮询次数
        count++;
        // 当轮询次数超过6次时,输出当前轮询到的元素
        if (count > 6) {
            console.log(arr[index]);
        }
    }
    // 输出剩余的元素
    for (let i = count; i < len; i++) {
        console.log(arr[i]);
    }
}

// 示例数组
const arr = [1, 2, 3, 4, 5];
// 轮询次数
const times = 10;
// 调用轮询函数
arrayPolling(arr, times);


请注意,上述代码只是一个示例,您可以根据自己的需求进行修改和调整。在实际应用中,请确保数组不为空,并处理可能出现的异常情况
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 00:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表