当前位置:网站首页>定时器循环展示数组
定时器循环展示数组
2022-08-10 17:39:00 【凡小多】
先看看效果图
流程
使用数组的slice() 方法通过条件判断截取原数组相应内容组成新数组
循环数组
let currentPage = 0
// arr:原数组 newLen:新数组需要的长度 currentPage:现在的页码
// 方法一:
function loopData(arr, newLen) {
let len = arr.length;
let result = len - currentPage;
let newArr = [];
if (result > 0 && result < newLen) {
newArr = [
...arr.slice(currentPage - result, len),
...arr.slice(0, newLen - result),
];
currentPage = newLen - result;
} else if (result >= newLen) {
newArr = arr.slice(currentPage, currentPage + newLen);
currentPage += newLen;
} else {
currentPage = 0;
newArr = arr.slice(currentPage, currentPage + newLen);
}
return newArr;
}
// 方法二:
function loopData(arr, newLen) {
let len = arr.length;
let newArr = [];
if (currentPage === len) {
// 页码等于数组长度时,从0重新开始
currentPage = 0;
}
if (currentPage + newLen <= len) {
newArr = [...arr.slice(currentPage, currentPage + newLen)];
currentPage++;
} else if (currentPage + newLen > len && currentPage < len) {
newArr = [
...arr.slice(currentPage, len),
...arr.slice(0, newLen - len + currentPage),
];
currentPage++;
}
return newArr;
}
简单案例
<template>
<div class="container">
<el-button @click="changeStatus">{
{ flag ? "暂停" : "开始" }}</el-button>
{
{ list }}
</div>
</template>
<script> let currentPage = 0; export default {
data() {
return {
arr: [1, 2, 3, 4, 5, 6, 7], list: [], timer: null, flag: true, }; }, mounted() {
this.start() }, destroyed() {
this.timer && clearInterval(this.timer); }, methods: {
changeStatus() {
if (this.flag) {
this.timer && clearInterval(this.timer); } else {
this.start(); } this.flag = !this.flag; }, start() {
this.timer = setInterval(() => {
this.list = this.loopData(this.arr, 4); }, 1000); }, loopData(arr, newLen) {
let len = arr.length; let newArr = []; if (currentPage === len) {
currentPage = 0; } if (currentPage + newLen <= len) {
newArr = [...arr.slice(currentPage, currentPage + newLen)]; currentPage++; } else if (currentPage + newLen > len && currentPage < len) {
newArr = [ ...arr.slice(currentPage, len), ...arr.slice(0, newLen - len + currentPage), ]; currentPage++; } return newArr; }, }, }; </script>
<style lang="scss" scoped> .container {
padding: 20px; } </style>
边栏推荐
猜你喜欢

不能直接在交易所期货开户

还在用 Xshell?你 out 了,推荐一个更现代的终端连接工具,好用到爆!

【2015】【论文笔记】等离子光混合器THz辐射的光谱——

FFmpeg extract H264 nalu from the mp4

Xilinx FPGA收发器参考时钟设计应用

Before opening a futures account, you must confirm the handling fee as soon as possible

oracle11g体系结构

欧洲核子研究中心首次在量子机器学习研究中取得实效

「业务架构」业务能力的热图是什么,有啥用?

Allegro软件Shape菜单下的每个命令的含义
随机推荐
Xilinx FPGA收发器参考时钟设计应用
DeamNet代码学习||网络框架核心代码 逐句查找学习
Kong自定义插件初体验
全新接口——邻家好货 API
架构-三层架构:三层架构
Flexsim 发生器和暂存区设定临时实体流颜色和端口
烟雾、空气质量、温湿度…自己徒手做个环境检测设备
忍不住 - 发个新帖子【为什么把红圈的功能入口隐藏?需要移动到鼠标到位置驻停才显示?】- 请投票
skywalking vulnerability learning
CDH6.3.2之Kerberos安全认证_大数据培训
CAS客户端对接
R语言拟合ARIMA模型:使用forecast包中的auto.arima函数自动搜索最佳参数组合、模型阶数(p,d,q)、如果已知阶数则直接使用arima函数构建模型(order参数指定阶数)
Trie字典树
Toronto Research Chemicals农药检测丨甲硫威
微信小程序富文本标签rich-text
网络可观测性:让您的网络监控更上一层楼|TechGenix
PS2手柄通讯协议解析—附资料和源码「建议收藏」
「软件架构」10种常见的软件架构模式
【燃】是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点
R语言使用ggpubr包的ggsummarystats函数可视化箱图(通过ggfunc参数设置)、在可视化图像的下方添加描述性统计结果表格、设置add参数为jitter添加抖动数据点