js处理数组?

作者站长头像
站长
· 阅读数 13

js处理数组?arr数组最小长度是4最大是8let num = 600;暂时写死600,这个数自定义输入的

麻烦各位大佬帮忙看看

回复
1个回答
avatar
test
2024-08-11

横向计算

function createListData(list, num = 600) {
    let count = list.reduce((n, i) => n + i.test, 0)
    let step = num / count | 0 // 不一定能整除,这里向下取整
    let data = list.map((item, index) => {
        return Array.from({length: item.test}).map(citem => {
            return {
                min: 0,
                max: 0
            }
        })
    })

    let max = Math.max(...list.map(i => i.test))
    let value = 0, idx = 1
    for (let index = 0; index < max; index++) {
        data.forEach(item => {
            if(item[index]){
                item[index].index = idx++
                item[index].min = value + 1
                value += step
                item[index].max = num < value + step ? num : value
            }
        })
    }
    
    return data
}

let data = createListData(arr, 605)

answer image

竖向计算

function createListData(list, num = 600) {
    let count = list.reduce((n, i) => n + i.test, 0)
    let step = num / count | 0 // 不一定能整除,这里向下取整
    let value = 0, idx = 1
    let data = list.map((item, index) => {
        return Array.from({length: item.test}).map(citem => {
            let start = value
            value += step
            return {
                index: idx++,
                min: start + 1,
                max: num < value + step ? num : value
            }
        })
    })

    return data
}

answer image

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容