关于数组的一点事儿

好久不写东西了,直接主题吧
需求:有一个数组,

var shape = [
[1, 2, 3,13],
[4, 5, 6,14],
[7, 8, 9,15],
[10,11,12,16]
];
求连续三个数之和的最大值。比如123、147、159算连续, 124 不算连续
以上数组简单可以看出最大值是14+15+16=45
下面直接上代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
</body>
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
    var shape = [
          [1, 2, 3,13],
          [4, 5, 6,14],
          [7, 8, 9,15],
          [10,11,12,16]
        ];
    var arr = [];
    var sum = 0;
    //横向
    for (var i = 0; i < shape.length; i++) {
        for (var j = 0; j < shape[i].length-2; j++) {
            sum += shape[i][j]+shape[i][j+1]+shape[i][j+2];
            arr.push(sum);
            sum = 0;
        };
    };
    //纵向
    for (var i = 0; i < shape.length-2; i++) {
        for (var j = 0; j < shape[i].length; j++) {
            sum += shape[i][j]+shape[i+1][j]+shape[i+2][j];
            arr.push(sum);
            sum = 0;
        };
    };
    //斜向
    for (var i = 0; i < shape.length-2; i++) {
        for (var j = 0; j < shape[i].length-2; j++) {
            sum += shape[i][j]+shape[i+1][j+1]+shape[i+2][j+2];
            arr.push(sum);
            sum = 0;
        };
    };
    alert(Math.max.apply(null, arr));//最大值
    alert(Math.min.apply(null, arr));//最小值
})
</script>
</html>

分别计算了横向 纵向 以及斜向的数值之和 然后创建新的数组,在数组中取到最大最小值
小弟JS 水平一般,急需大神指导怎么优化代码
小弟先谢过了

posted on 2015-12-07 09:48  flsummer  阅读(341)  评论(0编辑  收藏  举报

导航