今天就来讲讲数组的前后对称的判断,首先创建一个新数组。
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("对不起数组不太对称呢")
}
复制代码