数组的for循环:

上篇文章说到数组可以通过索引获取到数组中的内容,可以参考JavaScript之数组的基础知识,刚好索引的排序是从0开始的,那么我们就可以通过for循环来循环数组,这种行为我们称为:遍历

所谓遍历(Traversal),是指沿着某条搜索路线,依次对树(或图)中每个节点均做一次访问。访问结点所做的操作依赖于具体的应用问题, 具体的访问操作可能是检查节点的值、更新节点的值等。不同的遍历方式,其访问节点的顺序是不一样的。遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。当然遍历的概念也适合于多元素集合的情况,如数组。

第一种:
var arr = [8,5,3,1,7,2,9,6] //定义一个数组
for(var i=0;i<arr.length;i++){ //用for循环遍历数组,具体操作为:定义一个变量i,给它赋值为1,然后判断i是否小于数组的长度(因为 length就是数组的长度,是一个数值,所以我们可以直接用它来决定循环次数),true就执行下面打印代码后i自增,否则退出循环console.log(arr[i]) //打印数组中索引为i的值,结果:数值会在控制台依次打印arr[0],arr[1],arr[2]...直到全部循环完毕
}第二种:
var arr = [8,5,3,1,7,2,9,6] //定义一个数组
for(var i in arr){  //for in循环遍历是按照对象中有多少元素就执行多少次循环,i为我们定义的一个变量,每次循环一次相应的i就会对应当前元素的索引值console.log(arr[i]) //打印数组中索引为i的值,结果:数值会在控制台依次打印
}

数组的排序:

排序:顾名思义,就是把一堆混乱的数据按照我们的规矩依次排序好。数组的排序就是让数组里面混乱的元素,有规律的排整齐。数组的排序分为两种:冒泡排序和选择排序。

冒泡排序:

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算 法。

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

var arr = [8,5,3,1,7,2,9,6] //定义一个无序数组for(var j=0;j<=arr.length-1;j++){ 定义一个变量j表示循环数组的长度-1次for(var i=0;i<=arr.length-1;i++){ //定义一个变量i表示循环数组的长度-1次if(arr[i]>arr[i+1]){ //判断索引为i的值比索引为i+1的值大,则进行换位var tmp = arr[i]; //定义一个变量tmp,给它赋值索引为i的元素arr[i] = arr[i+1] //把索引为i的元素覆盖为索引为i+1的元素arr[i+1] = tmp //再把tmp的值赋给索引为i+1的值}}
}
console.log(arr) //最后打印数组,结果:Array(8) [ 1, 2, 3, 5, 6, 7, 8, 9 ]

选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

       //首先先输出最小值以及改变它的索引位置var arr = [8,5,3,1,7,2,9,6] //定义一个数组var minIndex = 0; //定义一个变量为最小值索引,假设索引为0的元素最小进行比较for(var i=1;i<=arr.length-1;i++){ //for循环遍历所有元素if(arr[minIndex] > arr[i]){ //if判断如果数组的第0位索引大于第1位索引就进行换位,依次判断minIndex = i; //换位}}//console.log(minIndex) //输出最小值的索引//console.log(arr[minIndex]) //输出最小值var tmp = arr[minIndex] //定义一个变量用于交换索引值,先把上面得到的最小值赋给tmparr[minIndex] = arr[0] //再把当时最小值跟第一位的值交换一下arr[0] = tmp//console.log(tmp) //输出tmp被赋予的最小值console.log(arr[0]) //此时数组的第一位就是最小值,因为它的索引已经被跟之前的第一位值索引调换位置
//在上面的基础上,再套个for循环,让里面的元素都进行遍历排序
var arr = [8,5,3,1,7,2,9,6] //定义一个数组
for(var j=0;j<=arr.length-1;j++){ //定义一个for循环,循环次数为它的长度-1取索引值var minIndex = j; //定义一个变量表示索引用来遍历数组for(var i=j+1;i<=arr.length-1;i++){ //定义一个for循环,循环次数为它的长度-1,j+1变量赋值给iif(arr[minIndex] > arr[i]){ //判断如果左边索引值的元素比右边索引值的元素大,则换位minIndex = i;}}var tmp = arr[minIndex] //定义一个变量用于交换索引值,先把上面得到的最小值赋给tmparr[minIndex] = arr[j] //再把当时最小值跟第一位的值交换一下arr[j] = tmp//console.log(tmp) //输出tmp被赋予的最小值console.log(arr[j]) //此时数组的第一位就是最小值,因为它的索引已经被跟之前的第一位值索引调换位置}console.log(arr) //打印输出,结果为:Array(8) [ 1, 2, 3, 5, 6, 7, 8, 9 ]

JavaScript之数组的循环遍历以及排序相关推荐

  1. JavaScript中利用for循环遍历数组

    这篇文章主要为大家详细介绍了JavaScript中利用for循环遍历数组,最好不要使用for in遍历,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先看一段代码 1 2 3 4 5 6 7 8 ...

  2. html页面遍历数组,JavaScript中利用for循环遍历数组

    先看一段代码 Document // 一个普通的数组 var arr =[3,5,2,6]; // 普通的for 循环遍历 for(var i = 0 ; i < arr.length; i++ ...

  3. 数组常见的遍历循环方法、数组的循环遍历的效率对比

    1 遍历数组的方法 1-1.for / while 最普通的循环 效率最高 兼容ie6 tips:for循环更适用于循环的开始和结束已知,循环次数固定的场合:while循环更适合于条件不确定的场合 1 ...

  4. javascript百炼成仙 第一章 掌握JavaScript基础 1.9 循环遍历的奥妙

    "小娃娃,我且问你,可否知道循环遍历的法术?" "循环遍历,不就是for循环或者while循环吗,这有何难?"说着,叶小凡就随便打出一段代码: for(var ...

  5. linux数组删除数据,JavaScript在数组的循环中删除元素

    在开发JavaScript应用的过程中,经常会遇到在循环中移除指定元素的需求. 按照常规的思路,就是对数组进行一个for循环,然后在循环里面进行if判断,在判断中删除掉指定元素即可. 但是实际情况往往 ...

  6. javascript在数组的循环中删除元素

    在开发JavaScript应用的过程中,经常会遇到在循环中移除指定元素的需求. 按照常规的思路,就是对数组进行一个for循环,然后在循环里面进行if判断,在判断中删除掉指定元素即可. 但是实际情况往往 ...

  7. Linux bash 数组 for循环遍历

    #!/bin/bashxx_list=( \ "111111" \ "222222" \ "333333" \ "444444&q ...

  8. JavaScript 循环遍历数组的11种方法

    本教程解释了如何在 JavaScript 中循环遍历数组.根据我们的用例和代码的速度/效率,我们可以使用 Vanilla JavaScript 中的传统方法(如for循环和while循环)或使用 ES ...

  9. JavaScript 中的常用12种循环遍历(数组或对象)的方法

    1.for 循环 1 2 3 4 5 6 7 let arr = [1,2,3]; for (let i=0; i<arr.length; i++){  console.log(i,arr[i] ...

最新文章

  1. Arm架构CPU服务器
  2. Python 之 Pandas (二)选择数据
  3. swift 3d v6.0汉化中文版
  4. jpa root.join_JPA 2.1和Java EE 7中的JPQL增强功能(第1部分– JOIN ON)
  5. vh,vw单位你知道多少?
  6. android红米3调用相机,红米3有什么接口?红米3有HDMI接口吗?
  7. java date 实例_Java Date 和 Calendar 实例
  8. linux apple开发环境,Objective-C开发环境设置
  9. 多站合一音乐搜索神器网站源码
  10. centos没有可用软件包 mysql-server_centos7解决yum install mysql-server没有可用包?
  11. hdu-3488-Tour(KM最佳完美匹配)
  12. 数据库基础介绍(1)几种常见的数据库
  13. 中间代码生成之四元式
  14. 2020-04-27
  15. 微信小程序----Grid(九宫格)(flex实现九宫格布局)
  16. java算球体积的代码_java - 球体体积法不起作用 - 堆栈内存溢出
  17. 用rpa必须会用python语言_几步教你用 Python 制作一个 RPA 机器人!
  18. [CVPR 2020] D3Feat: Joint Learning of Dense Detection and Description of 3D Local Features
  19. android notify() notifyAll()的区别
  20. HTTP请求返回状态码

热门文章

  1. SOLIDWORKS如何快速制作库特征
  2. 通过 js 设置点击查看原图
  3. 奔向新纪元,Vista安装经历
  4. js获取元素对象的几种方法
  5. 解决手机助手与 android sdk 的adb 冲突问题
  6. html app启动页制作,APP引导页制作
  7. css文本溢出隐藏显示省略号
  8. App Store十年前最受欢迎的应用程序
  9. angular8+ng-zorro-antd
  10. python 枪_用Python抢枪过年的火车票