js数组处理数据?

let arr = [  
    {id: 1, test: 5},  
    {id: 2, test: 4},  
    {id: 3, test: 5},  
    {id: 4, test: 6},  
];  

let num = 600;
num是最大数为600,然后根据arr数组里面的test的值之和(5+4+5+6)为20,
600 / 20 = 30;
希望得到下面的格式:
图片第一列5个输入框对应数组arr里面下标为0的test的值为5
图片第二列4个输入框对应数组arr里面下标为1的test的值为4
...

控制1-30之间的随机数里面的输入框修改的时候只能输入1-30的数,
控制31-60之间的随机数里面的输入框修改的时候只能输入31-60的数

求各位大佬帮忙看看。感激不尽...

阅读 1.6k
1 个回答

image.png
image.png

这位啥不用 AI 生成呢?

image.png

    // 将 600 分成 20 份,第一份为 1-30,第二份为 31-60
    num = 600;
    numPer = 30;
    res = Array.from({ length: num / numPer }, (_, i) => {
    return `${i * numPer + 1}-${(i + 1) * numPer}`;
    });
    arr = [
    { id: 1, test: 5 },
    { id: 2, test: 4 },
    { id: 3, test: 5 },
    { id: 4, test: 6 },
    ];
    // 根据 arr 将 res 分为四列,第一列有5个,包含 1-30、121-150、241-270、361-390、481-510
    result = Array.from({ length: 4 },()=>[]);
    // 需要注意第二列的个数,不能超过,放不下就顺延
    while (res.length) {
    for (let i = 0; i < result.length; i++) {
        if (arr[i]?.test > result[i]?.length) {
        result[i].push(res.shift());
        }
    }
    }
    console.log(result);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题