判断数组前后是否对称

        今天就来讲讲数组的前后对称的判断,首先创建一个新数组。

   var arry=[7,1,2,3,4,5,4,3,2,1,8];
复制代码

第一步先对数组进行分割

        思路已知的数组是单数所以取到中间值吧中间值去掉之后对数组进行平均分割。

      //new一个新数组
        var newarry=new Array();
      //去掉数组中的逗号
        var arrys=arry.splice(",");
        //看看数组最中间的值是在数组中的第几位,一定记得向上取整
        var arrey=Math.ceil(arrys.length/2);
        //去掉数组最中间的值
        arrys.splice(arrey-1,1);
        //对数组进行平均分割
        for(var i=0;i<arrys.length;i+=arrys.length/2){
            //设定一个值接收平均分割后的数组
            var splcearry=arrys.slice(i,i+arrys.length/2);
            //将分割好的数组塞进新建的数组中
            newarry.push(splcearry);
        }

复制代码

第二步两个数组进行比对

        上面已经讲了如何分割数组,接下来就是要对两个数组进行对比和比对。

 //创建第一个对比数组
        var newarryz=new Array();
        //创建第二个对比数组
        var newarryd=new Array();
        //将循环的第一个数组塞入第一个对比数组中
        for(var a=0;a<newarry[0].length;a++){
            newarryz.push(newarry[0][a]);
        }
        //将循环的第二个数组塞入第二个对比数组中
        for(var b=0;b<newarry[1].length;b++){
            newarryd.push(newarry[1][b]);
        }
复制代码

        比对的数组还要考虑一个问题,那就是第二个数组的顺序是反的所以要对第二个数组的顺序进行反转。

//使用reverse()方法反转第二个数组
        newarryd.reverse();
复制代码

第三步判断两个数组是否对称

        最后判断数组是否对称

   //使用toString(来把一个布尔值转换成字符串)对两个数组进行对比,对比他们是否等价
        if(newarryz.toString()===newarryd.toString()){
            //等价输出对称信息
            alert("哈哈数组对称")
        }else{
            //不等价输出不对称信息
            alert("对不起数组不太对称呢")
        }
复制代码

        最后多说一嘴,就是如果数组是双数的话这种方法就不好判断了,所以在使用这个方法之前还要考虑到单双数,这里就要使用取余的方法进行实现了,一般来讲就是%2这个方法取余就能实现上述所说的结果。最后贴一个完整代码如果大家还有问题和改进意见请在下面评论区加以指正和评论。

  //建立数组
    var arry=[7,1,2,3,4,5,4,3,2,1,8];
    //new一个新数组
    var newarry=new Array();
        //去掉数组中的逗号
        var arrys=arry.splice(",");
        //看看数组最中间的值是在数组中的第几位,一定记得向上取整
        var arrey=Math.ceil(arrys.length/2);
        //去掉数组最中间的值
        arrys.splice(arrey-1,1);
        //对数组进行平均分割
        for(var i=0;i<arrys.length;i+=arrys.length/2){
            //设定一个值接收平均分割后的数组
            var splcearry=arrys.slice(i,i+arrys.length/2);
            //将分割好的数组塞进新建的数组中
            newarry.push(splcearry);
        }
        //创建第一个对比数组
        var newarryz=new Array();
        //创建第二个对比数组
        var newarryd=new Array();
        //将循环的第一个数组塞入第一个对比数组中
        for(var a=0;a<newarry[0].length;a++){
            newarryz.push(newarry[0][a]);
        }
        //将循环的第二个数组塞入第二个对比数组中
        for(var b=0;b<newarry[1].length;b++){
            newarryd.push(newarry[1][b]);
        }
        //使用reverse()方法反转第二个数组
        newarryd.reverse();
        //使用toString(来把一个布尔值转换成字符串)对两个数组进行对比,对比他们是否等价
        if(newarryz.toString()===newarryd.toString()){
            //等价输出对称信息
            alert("哈哈数组对称")
        }else{
            //不等价输出不对称信息
            alert("对不起数组不太对称呢")
        }
复制代码

转载于:https://juejin.im/post/5ac6e060f265da23a22958ad

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值