二维数组最外围顺时针排序输出

首先讲解一下题目

一个二维数组最外层顺时针排序输出

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,6console.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);
复制代码

最后想说的这个方法可能不是唯一的解决方案,现在我也只能想到这个方案,如果大家有更好的解决方案不妨告诉我,我再进行修正,今天的文章就到这谢谢阅读。

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

微软的一道前端面试题相关推荐

  1. [转]微信的一道前端面试题

    为什么80%的码农都做不了架构师?>>>    原文 实现一个LazyMan,可以按照以下方式调用: LazyMan("Hank")输出: Hi! This is ...

  2. 由浅入深的前端面试题 和矫情的“浪漫主义”诗句

    好吧,我承认太标题党了,这篇文章是通过一道前端面试题引出的纯技术讨论.我先要矫情无比的从中外诗歌说起. 传统的佛学经典里,被世人熟知的有这样一句话:"一花一世界,一叶一菩提,一木一浮生,一草 ...

  3. 由浅入深的前端面试题 和矫情的“浪漫主义”诗句 1

    好吧,我承认太标题党了,这篇文章是通过一道前端面试题引出的纯技术讨论.我先要矫情无比的从中外诗歌说起. 传统的佛学经典里,被世人熟知的有这样一句话:"一花一世界,一叶一菩提,一木一浮生,一草 ...

  4. 「前端面试题系列7」Javascript 中的事件机制(从原生到框架)

    前言 这是前端面试题系列的第 7 篇,你可能错过了前面的篇章,可以在这里找到: 理解函数的柯里化 ES6 中箭头函数的用法 this 的原理以及用法 伪类与伪元素的区别及实战 如何实现一个圣杯布局? ...

  5. 【前端】前端面试题整理

    前端和计算机相关知识 你能描述一下渐进增强和优雅降级之间的不同吗 浏览器兼容问题 如何对网站的文件和资源进行优化? 怎么学习前端?怎么接触前端新知识? 关于前后端分离 关于浏览器内核(渲染引擎) 浏览 ...

  6. 今日头条php面试经验,「今日头条」前端面试题和思路解析

    一篇文章和一道面试题 作者用一道2017年「今日头条」的前端面试题为引子,分步讲解了最终结果的执行原因.其中涉及到了不少概念,比如异步的执行顺序,宏任务,微任务等等,同时作者限定了执行范围,以浏览器的 ...

  7. 前端面试题之浏览器原理篇

    前端面试题之浏览器原理篇 一.浏览器安全 1. 什么是 XSS 攻击? (1)概念 (2)攻击类型 2. 如何防御 XSS 攻击? 3. 什么是 CSRF 攻击? (1)概念 (2)攻击类型 4. 如 ...

  8. 前端面试题【131道】

    前端面试题 1.vue2和vue3的主要区别 3.Apply/call/bind的原理是什么? 4.说说你对原型和原型链的理解? 5.说说你对ES6中Generator的理解 6.说说你对Event ...

  9. 金三银四求职季,前端面试题小梳理(HTML、CSS、JS)

    好久没写学习记录,最近太多事,又到一年求职季,都说金三银四求职季,自己也做一下最近学习的一些前端面试题梳理,还是个小白,写的不对请指正,不胜感激. HTML篇 html语义化 用语义化的代码标签书写, ...

最新文章

  1. pda找不到服务器,PDA连不上服务器常见问题分析.doc
  2. 手机的秘密--按几个键就知道
  3. Python相对导入导致SystemError的解决方案(译)
  4. c语言 sizeof length,size()、length ()和sizeof()的区别
  5. linux java查看进程命令_linux一些查看进程情况的命令
  6. java无效的源发行版_无效的Java
  7. 以外的文件 删除_原来C盘还可以删除这五个文件,难怪电脑越来越卡!
  8. WPF--TextBlock的ToolTip附加属性
  9. 10年软件开发教会我最重要的10件事[转]
  10. 利用栈和队列将队列中的元素逆置☆
  11. ies文件 vray_VRAY IES灯与光域网的灯有什么不同 VRAY IES有什么特性
  12. 基于Java毕业设计优课网设计与实现源码+系统+mysql+lw文档+部署软件
  13. MSN在线代码|QQ在线客服代码|SKYPE 贸易通在线代码
  14. 10月编程语言排行榜:Java第一无悬念,老戏骨重回前三!
  15. 知道焊缝长度如何确定节点板尺寸_必看!手把手教你如何看懂图纸
  16. 大恒相机文件配置V1.1
  17. 优酷视频kux格式转换为MP4的两种技巧
  18. “交警+科技”温暖返乡路
  19. 042分享资料下载地址汇总
  20. 无限法则服务器选择吗,PlayStation 4内置存储空间不够?可使用移动固态硬盘外置拓展...

热门文章

  1. 数学建模-回归分析(Stata)
  2. 测试知识 - 关于电脑
  3. html5卡片平行视差效果,HTML5/jQuery很棒的交互式平行视差皓月当空场景动画
  4. android 让app全屏显示,Android app设置全屏模式
  5. 微信聊天机器人:软件和源代码,适合小白~(含wxpy、pyinstaller、腾讯AI智能问答、django等模块)
  6. HTML5在线摄像头应用
  7. 浏览器百家争鸣,国产能打的浏览器来了!
  8. shell脚本之IP计算器
  9. 雅利安人覆灭了世界三大文明,为何单单在商朝被斩首两万?
  10. Python性能分析利器pyinstrument讲解