二维数组最外围顺时针排序输出
首先讲解一下题目
一个二维数组最外层顺时针排序输出
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
16,17,18,19,20
21,22,23,24,25
输出结果要是1,2,3,4,5,14,15,20,25,24,23,22,21,16,11,6的顺序中间的数字则不要
思路是首先输出第一行1,2,3,4,5这个顺序不会变所以找到二维数组中的第一行数组直接输出就行
之后思路是输出中间几个数组的最后一个值10,15,20
第三步输出最后一行数组倒序的值25,24,23,22,21
最后一步将中间部分的数组倒序输出第一个值16,11,6
这样就完成了所有数组的输出,下面是代码讲解
一个二维数组
// 建立一个二维数组
var arry=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]];
选中第一个数组
//取到数组的第一个数组
var fistarry=arry[0];
新建一个数组然后循环插入到这个数组里
//创建新数组用于储存
var newarry=new Array();
for(var i=0; i< fistarry.length;i++){
//插入新数组第一个数组
newarry.push(fistarry[i])
}
创建一个新数组来存储中间的数组,之后循环这几个中间的数组取到最后一个值,主意这个取到的中间的数组很重要一会也会用到
//创建新数组用于储存中间的数组
var centerArray=new Array();
for (var a=1;a < arry.length-1;a++){
//插入中间的数组
centerArray.push(arry[a]);
}
//循环中间的这几个数组
for(var v=0;v < centerArray.length;v++){
//定义这几个数组
var centerlastarry=centerArray[v];
// 取到的这几个数组只选出最后一个即可
newarry.push(centerlastarry[centerlastarry.length-1])
}
第三步是找到最后一个数组之后对它进行反转操作
//取到最后一个数组
var lastarray=arry[arry.length-1];
//使用reverse对最后一个数组进行反转
var fanlastarray=lastarray.reverse();
//循环反转的最后一个数组
for(var s=0;s < fanlastarray.length;s++){
//将最后一个数组插入新的数组中
newarry.push(fanlastarray[s]);
}
最后一步是把刚刚的中间的数组反转顺序然后取到第一个数字
//刚刚的中间的数组不知道大家是否还记得现在使用reverse对这个数组进行反转
var fancenterarray=centerArray.reverse();
//循环取出这几个数组中的第一个数字
for(var f=0;f < fancenterarray.length;f++){
//定义每个数组
var fistmumber=fancenterarray[f];
//每个数组的第一个插入新数组
newarry.push(fistmumber[0]);
}
将值打印出来
//打印结果1,2,3,4,5,14,15,20,25,24,23,22,21,16,11,6
console.log(newarry);
将值打印出来贴出来源码进行分享
var arry=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]];
//取到数组的第一个数组
var fistarry=arry[0];
//创建新数组用于储存
var newarry=new Array();
for(var i=0;i < fistarry.length;i++){
//插入新数组第一个数组
newarry.push(fistarry[i])
}
//创建新数组用于储存中间的数组
var centerArray=new Array();
for (var a=1;a < arry.length-1;a++){
//插入中间的数组
centerArray.push(arry[a]);
}
//循环中间的这几个数组
for(var v=0;v < centerArray.length;v++){
//定义这几个数组
var centerlastarry=centerArray[v];
// 取到的这几个数组只选出最后一个即可
newarry.push(centerlastarry[centerlastarry.length-1])
}
//取到最后一个数组
var lastarray=arry[arry.length-1];
//使用reverse对最后一个数组进行反转
var fanlastarray=lastarray.reverse();
//循环反转的最后一个数组
for(var s=0;s < fanlastarray.length;s++){
//将最后一个数组插入新的数组中
newarry.push(fanlastarray[s]);
}
//刚刚的中间的数组不知道大家是否还记得现在使用reverse对这个数组进行反转
var fancenterarray=centerArray.reverse();
//循环取出这几个数组中的第一个数字
for(var f=0;f < fancenterarray.length;f++){
//定义每个数组
var fistmumber=fancenterarray[f];
//每个数组的第一个插入新数组
newarry.push(fistmumber[0]);
}
//打印结果
console.log(newarry);
最后想说的这个方法可能不是唯一的解决方案,现在我也只能想到这个方案,如果大家有更好的解决方案不妨告诉我,我再进行修正,今天的文章就到这谢谢阅读。