JS实现行列矩阵互换


不废话,直接上代码:

function changeXY(arr, size) {
        let newArr = []
        let iNow = 0
        ;(function() {
            if (size == iNow) {
                return
            }
            for (let i = 0; i < arr.length; i++) {
                if (i % size === iNow) {// 找到拐点
                    newArr.push(arr[i])
                }
            }
            iNow++
            arguments.callee() // 自调函数
        })()
        return newArr
    }

完整代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    * {
        margin: 0;
        padding: 0;
    }
    li {
        list-style: none;
    }
    #ul1 {
        margin: 20px auto;
        overflow: hidden;
        border: 1px #000 solid;
        border-right: none;
        border-bottom: none;
    }
    #ul1 li {
        float: left;
        border: 1px #000 solid;
        border-left: none;
        border-top: none;
        text-align: center;
        line-height: 50px;
    }
</style>
<body>
<ul id="ul1"></ul>
</body>
<script >
    let oUl = document.getElementById('ul1')
    let aLi = document.getElementsByTagName('li')
    let sizeGrid = 50
    let size = 7
    let len = size * size
    let arr = []

    oUl.style.width = size * (sizeGrid + 1) + 'px'
    for (let i = 0; i < len; i++) {
        let oLi = document.createElement('li')
        oLi.style.width = sizeGrid + 'px'
        oLi.style.height = sizeGrid + 'px'
        oLi.innerHTML = i
        arr.push(i)
        oUl.appendChild(oLi)
    }

    function changeXY(arr, size) {
        let newArr = []
        let iNow = 0
        ;(function() {
            if (size == iNow) {
                return
            }
            for (let i = 0; i < arr.length; i++) {
                if (i % size === iNow) {
                    newArr.push(arr[i])
                }
            }
            iNow++
            arguments.callee()
        })()
        return newArr
    }

    let arr1 = changeXY(arr, size)
    console.log(arr1)
    for (let i = 0; i < aLi.length; i++) {
        aLi[i].innerHTML = arr1[i]
    }
</script>
</html>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0. 写在前面 当你开始工作时,你不是在给你自己写代码,而是为后来人写代码。 —— Nichloas C. Zak...
    康斌阅读 10,740评论 1 42
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,802评论 1 32
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,728评论 0 17
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,378评论 2 17
  • 即将要出了这个社会,才渐渐明白这个世界的人们,远比自己想象的要浮躁的多。 也许是因为学生时代,又是在医学院,周围的...
    晨听阅读 1,449评论 0 2