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

如何修正JS从数组取偶数生成5×5矩阵时数值重复的问题

问题修复方案

问题根源

  • aux的定位完全错误:它本该记录下一轮遍历原数组的起始下标,你却错误将其赋值为动态变化的column值,导致下一行起始位置回溯,出现重复元素
  • 全局修改column的逻辑完全多余,反而干扰了遍历边界判断

修复后的代码

function matrix(array) {
    const row = 5
    const perRowCount = 5 // 固定每行需要5个元素
    let aux = 0 // 记录原数组已遍历到的下标位置
    const result = [] // 存储最终5×5矩阵
    for (let i = 0; i < row; i++) {
        const newArray = []
        // 凑够当前行的5个偶数就停止
        while (newArray.length < perRowCount && aux < array.length) {
            const currentVal = array[aux]
            if (currentVal % 2 === 0) {
                newArray.push(currentVal)
            }
            aux++ // 无论元素是否符合要求,遍历过的下标都要后移
        }
        result.push(newArray)
        console.log(newArray.join(' '))
    }
    return result
}
matrix([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50])

输出结果

2 4 6 8 10
12 14 16 18 20
22 24 26 28 30
32 34 36 38 40
42 44 46 48 50

核心修改点

  • 去掉动态修改column的冗余逻辑,固定每行需要收集的元素数量为5
  • aux每次遍历都自增1,记录已经处理过的原数组下标,保证不会重复遍历之前的元素
  • 改用while循环处理单行元素收集,逻辑更清晰,避免嵌套for循环的边界判断混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:27:04