#独家
js如何对二维数组进行拉伸或者缩放?

2023-06-27 0 1,157

怎么样对二维数组进行拉伸/缩放?

就是以下这道题目,只不过不是根据倍数缩放,而是自定义新数组的宽高

假设有二维数组arr,宽等于2,高等于2。
1.数组左上角区域值是2,右下角区域值是1,拉伸后的数组也要大概保持这个比例.
2.原数组只有0,1,2这3个值,新数组也只能有这3个值

let arr = [
    [2, 0],
    [0, 1]
];

拉伸成宽等于4,高等于4,的数组就是:

[
    [2,2,0,0],
    [2,2,0,0],
    [0,0,1,1],
    [0,0,1,1]
];

拉伸成宽等于4,高等于3,的数组就是:

[
    [2,2,0,0],
    [2,2,0,0],
    [0,0,1,1],
];
或
[
    [2,2,0,0],
    [0,0,1,1],
    [0,0,1,1],
];
function scale(list, newW, newH) {
    return Array.from({length: newH}, (_, y) => {
        return Array.from({length: newW}, (_, x) =>
            list[y / newH * list.length | 0][x / newW * list[0].length | 0]
        )
    })
}
function scaleList(list, scaleX, scaleY) {
    let height = list.length
    let width = list[0].length
    let nheight = height * scaleY | 0
    let nwidth = width * scaleX | 0
    
    let res = new Array(nheight)
    for(let h = 0; h < nheight; h++){
        let y = h / scaleY | 0
        if(nheight % scaleY === 0){
            let arr = new Array(nwidth)
            for(let w = 0; w < nwidth; w++){
                let x = w / scaleX | 0
                arr[w] = list[y][x]
            }
            res[h] = arr
        }else{
            res[h] = [...res[y]]
        }
    }

    return res
}
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 js如何对二维数组进行拉伸或者缩放? https://www.jkxiazai.com/1871.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务