JavaScript之数组的循环遍历以及排序
数组的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之数组的循环遍历以及排序相关推荐
- JavaScript中利用for循环遍历数组
这篇文章主要为大家详细介绍了JavaScript中利用for循环遍历数组,最好不要使用for in遍历,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先看一段代码 1 2 3 4 5 6 7 8 ...
- html页面遍历数组,JavaScript中利用for循环遍历数组
先看一段代码 Document // 一个普通的数组 var arr =[3,5,2,6]; // 普通的for 循环遍历 for(var i = 0 ; i < arr.length; i++ ...
- 数组常见的遍历循环方法、数组的循环遍历的效率对比
1 遍历数组的方法 1-1.for / while 最普通的循环 效率最高 兼容ie6 tips:for循环更适用于循环的开始和结束已知,循环次数固定的场合:while循环更适合于条件不确定的场合 1 ...
- javascript百炼成仙 第一章 掌握JavaScript基础 1.9 循环遍历的奥妙
"小娃娃,我且问你,可否知道循环遍历的法术?" "循环遍历,不就是for循环或者while循环吗,这有何难?"说着,叶小凡就随便打出一段代码: for(var ...
- linux数组删除数据,JavaScript在数组的循环中删除元素
在开发JavaScript应用的过程中,经常会遇到在循环中移除指定元素的需求. 按照常规的思路,就是对数组进行一个for循环,然后在循环里面进行if判断,在判断中删除掉指定元素即可. 但是实际情况往往 ...
- javascript在数组的循环中删除元素
在开发JavaScript应用的过程中,经常会遇到在循环中移除指定元素的需求. 按照常规的思路,就是对数组进行一个for循环,然后在循环里面进行if判断,在判断中删除掉指定元素即可. 但是实际情况往往 ...
- Linux bash 数组 for循环遍历
#!/bin/bashxx_list=( \ "111111" \ "222222" \ "333333" \ "444444&q ...
- JavaScript 循环遍历数组的11种方法
本教程解释了如何在 JavaScript 中循环遍历数组.根据我们的用例和代码的速度/效率,我们可以使用 Vanilla JavaScript 中的传统方法(如for循环和while循环)或使用 ES ...
- 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] ...
最新文章
- Arm架构CPU服务器
- Python 之 Pandas (二)选择数据
- swift 3d v6.0汉化中文版
- jpa root.join_JPA 2.1和Java EE 7中的JPQL增强功能(第1部分– JOIN ON)
- vh,vw单位你知道多少?
- android红米3调用相机,红米3有什么接口?红米3有HDMI接口吗?
- java date 实例_Java Date 和 Calendar 实例
- linux apple开发环境,Objective-C开发环境设置
- 多站合一音乐搜索神器网站源码
- centos没有可用软件包 mysql-server_centos7解决yum install mysql-server没有可用包?
- hdu-3488-Tour(KM最佳完美匹配)
- 数据库基础介绍(1)几种常见的数据库
- 中间代码生成之四元式
- 2020-04-27
- 微信小程序----Grid(九宫格)(flex实现九宫格布局)
- java算球体积的代码_java - 球体体积法不起作用 - 堆栈内存溢出
- 用rpa必须会用python语言_几步教你用 Python 制作一个 RPA 机器人!
- [CVPR 2020] D3Feat: Joint Learning of Dense Detection and Description of 3D Local Features
- android notify() notifyAll()的区别
- HTTP请求返回状态码