You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过上一页/下一页按钮遍历多维数组(附一维实现代码)

多维数组的循环遍历切换实现

下面提供两种可行的实现方案,适配不同的需求场景:

方案1:先扁平化多维数组

如果不需要保留原多维结构的展示逻辑,最简单的方式是把多维数组转成一维数组,直接复用你原来的一维遍历逻辑。

实现代码

// 示例多维数组
var sav = [
    ["第一行第一项", "第一行第二项"],
    ["第二行第一项", "第二行第二项"],
    ["第三行第一项"]
];

// 将任意层级的多维数组扁平化
var flatSav = sav.flat(Infinity);

var box = document.getElementById('box');
var i = -1;

function next() {
    i = i >= flatSav.length - 1 ? 0 : i + 1;
    box.innerHTML = flatSav[i];
}

function prev() {
    i = i > 0 ? i - 1 : flatSav.length - 1;
    box.innerHTML = flatSav[i];
}
<a href="#" onclick="prev()">上一页</a>
<div id="box"></div>
<a href="#" onclick="next()">下一页</a>

flat(Infinity) 可以自动拆解任意嵌套层级的数组,把所有元素平铺成一维结构,后续逻辑和你原有的一维数组实现完全一致。

方案2:保留多维结构的双索引遍历

如果需要保留原多维数组的结构(比如要展示元素所在的行/列位置),可以用双索引(行索引 rowIndex、列索引 colIndex)来精准控制遍历顺序。

实现代码

// 示例多维数组
var sav = [
    ["第一行第一项", "第一行第二项"],
    ["第二行第一项", "第二行第二项"],
    ["第三行第一项"]
];

var box = document.getElementById('box');
var rowIndex = 0;
var colIndex = -1;

function next() {
    colIndex++;
    // 当前列超出当前行长度时,切换到下一行第一列
    if (colIndex >= sav[rowIndex].length) {
        rowIndex++;
        colIndex = 0;
        // 行索引超出数组长度时,回到第一行
        if (rowIndex >= sav.length) {
            rowIndex = 0;
        }
    }
    box.innerHTML = sav[rowIndex][colIndex];
}

function prev() {
    colIndex--;
    // 当前列小于0时,切换到上一行最后一列
    if (colIndex < 0) {
        rowIndex--;
        // 行索引小于0时,回到最后一行
        if (rowIndex < 0) {
            rowIndex = sav.length - 1;
        }
        colIndex = sav[rowIndex].length - 1;
    }
    box.innerHTML = sav[rowIndex][colIndex];
}
<a href="#" onclick="prev()">上一页</a>
<div id="box"></div>
<a href="#" onclick="next()">下一页</a>

这种方式会按顺序遍历每个子数组的元素(比如第一行第一项→第一行第二项→第二行第一项→...→第一行第一项循环),若需要展示行/列信息,可修改box.innerHTML为类似当前:第${rowIndex+1}行第${colIndex+1}项 - ${sav[rowIndex][colIndex]}的格式。

内容的提问来源于stack exchange,提问作者BukPhoenix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:41:11