数组相关内容
2021/7/28 6:06:05
本文主要是介绍数组相关内容,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、数组基础
数组:
一系列数据的集合
也就是我们把一些数据放在一个盒子里面,按照顺序排好,这个东西就是一个数组,存储着一些数据的集合
例如:var arr[1,2,3]
数组数据类型Array
数据类型分为两个类别:基本数据类型和复杂数据类型
基本数据类型: number string boolean undefined null
复杂数据类型:function object Aaary
创建数组的方式
1、字面量创建数组:
var arr = [] //创建一个空数组 var arr = [12,23,34] //创建一个有内容的数组
2、构造函数创建数组:
var arr = new Array() //创建一个空数组 var arr = new Array(12,23,34) //创建一个有内容的数组 var arr = new Arrsy(6) //创建一个长度为6的数组
数据的长度(length)
-length: 长度的意思
-length 就是表示数组的长度,数组里面有多少个成员,length 就是多少
数据的索引
-索引,也叫做下标,是指一个数据在数组里面排在第几个的位置
-注意: 在所有的语言里面,索引都是从 0 开始的
-在 js 里面也一样,数组的索引从 0 开始
var arr=[23,45] //创建一个数组 //在这组数组中,第0个数据就数字23,第1个数就是数字45,想要获取数组中的第几个就使用 数组[索引] 来获取 document.write(arr.[0]) document.write(arr.[1])
数组的遍历
-因为数组的索引就可以获取数组中的内容
-数组的索引又是按照 0 ~ n 顺序排列
-我们就可以使用 for 循环来循环数组,因为 for 循环我们也可以设置成 0 ~ n 顺序增加
var arr = [1,2,3,4,5] //使用for循环来遍历数组 for(var i=0;i<arr.length;i++){ //arr.length数组的长度 console.log(arr[i]) //控制台打印数组 }
例如:
//现有5名学生,语文成绩分别是98,87,95,89,77分,请定义一个成绩数组存储学生成绩并遍历输出
var arr = [98, 87, 95, 89, 77] var len = arr.length for (var i = 0; i < len; i++) { document.write(arr[i]) //页面显示数组 }
//求这5名学生总成绩?
var arr = [98, 87, 95, 89, 77] var len = arr.length var sum = 0 for (var i = 0; i < len; i++) { sum += arr[i] } document.write('总成绩是','sum')
//求大于平均分的学生成绩?
var arr = [98, 87, 95, 89, 77] var len = arr.length var sum = 0 for (var i = 0; i < len; i++) { sum += arr[i] } var avg = sum / len //求平均数 for (var i = 0; i < len; i++) { if (arr[i] > avg) { document.write(arr[i], "<br/>") } }
//求数组[89,78,90,99,67,59]的最大值、最小值以及 不及格的人数
var scores = [89, 78, 90, 99, 67, 59] var len = scores.length var max = 0 for (var i = 0; i < len; i++) { if (scores[i] > max) { max = scores[i] } } document.write('最大值是', max,'<br/>') var min=scores[0] for(var i=0;i<len;i++){ if(min>scores[i]){ min=scores[i] } } document.write('最小值是', min,'<br/>') var count=0 //计数器 for(var i=0;i<len;i++){ if(scores[i]<60){ count++ } } document.write('不及格的学生人数有',count,'个')
//任意数据数组中的内容交换
var arr = [23, 6, 25, 33] var i = 1 var j = 3 function swap(arr, i, j) { var temp = arr[i] arr[i] = arr[j] arr[j] = temp document.write(arr) return arr } swap(arr, i, j)
二、数据类型之间储存的区别
存储空间主要分为:栈和堆
-栈: 主要存储基本数据类型的内容
-堆: 主要存储复杂数据类型的内容
数据类型之间的比较:1、基本数据类型是 值 之间的比较
2、复杂数据类型是 地址 之间的比较
注意:基本数据类型的变量是存储在栈区域
复杂数据类型:1、数组对象存储在堆区域
2、对象名、数组名存储在堆区域
3、栈区域中引用变量存储的值是对象在堆区域的内存地址
三、数组的常用方法:
1、push 是用来在数组的末尾追加一个元素
2、pop 是用来删除数组末尾的一个元素
3、unshift 是在数组的最前面添加一个元素
4、shift 是删除数组最前面的一个元素
5、splice 是截取数组中的某些内容,按照数组的索引来截取
6、reverse 是用来反转数组使用的
7、sort 是用来给数组排序的 (默认是升序)
8、concat 是把多个数组进行拼接
9、join 是把数组里面的每一项内容链接起来,变成一个字符串
四、数组的排序
排序的两种方式:冒泡排序和选择排序
冒泡排序:
1、基本思想:-先遍历数组,让挨着的两个进行比较,如果前一个比后一个大,那么就把两个换个位置
-数组遍历一遍以后,那么最后一个数字就是最大的那个
-然后进行第二遍的遍历,还是按照之前的规则,第二大的数字就会跑到倒数第二的位置
-以此类推,最后就会按照顺序把数组排好了
案例:
var arr = [45, 89, 99, 73, 42] var len=arr.length for(var i=0;i<len-1;i++){ for(var j=0;j<len-i-1;j++){ if(arr[j]>arr[j+1]){ var atem=arr[j] arr[j]=arr[j+1] arr[j+1]=atem } } } console.log(arr)
选择排序:
基本思想:-在要排序的一组数中,选出最小的一个数与第一个位置的数交换-然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止
案例:
var arr = [99, 89, 43, 73, 42] varlen=arr.length for(var i=0;i<len-1;i++){ var minIndex=i for(var j=i+1;j<len;j++){ if(arr[minIndex]>arr[j]) minIndex=j } var temp=arr[i] arr[i]=arr[minIndex] arr[minIndex]=temp console.log(arr) }
五、函数参数传递
基本数据类型和复杂数据类型的区别:- 因为复杂数据类型,变量存储的是地址,真实内容在 堆空间 内存储
-所以赋值的时候相当于把 obj 存储的那个地址复制了一份给到了 obj2 变量
-现在 obj 和 obj2 两个变量存储的地址一样,指向一个内存空间
-所以使用 obj2 这个变量修改空间内的内容,obj 指向的空间也会跟着改变了
六、ES6 中常见的数组常用方法
indexOf:查找字符串中指定字符或字符串首次出现的位置,返首索引值
-语法:str1.IndexOf("字"); //查找“字”在str1中的索引值(位置)
forEach:- 和 for 循环一个作用,就是用来遍历数组的
-语法:arr.forEach(function (item, index, arr) {})
map:和 forEach 类似,只不过可以对数组中的每一项进行操作,返回一个新的数组
filter:- 和 map 的使用方式类似,按照我们的条件来筛选数组
-把原始数组中满足条件的筛选出来,组成一个新的数组返回
案例:
// 输出年龄大等于20岁的姓名 //filter的方法 var products = [{ name: 'jack', age: 20}, { name: 'rose', age: 23}, { name: 'lilei', age: 19} ] var newArr=products.filter(function(item,index){ return item.age>=20 }) newArr.forEach(function(item,index){ console.log(item.name) })
// 输出年龄大等于20岁的姓名 //for循环的方法 var products = [{ name: 'jack', age: 20}, { name: 'rose', age: 23}, { name: 'lilei', age: 19} ] var len=products.length for(var i=0;i<len;i++){ var item=products[i] if(item.age>=20){ console.log(item.name) } }
find:-find() 方法返回通过测试(函数内判断)的数组的第一个元素的值
七、伪数组
伪数组:1、拥有 length 属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)
2、不具有数组所具有的方法
常见的伪数组有:
函数内部的 argumentsDOM 对象列表(比如通过 document.getElementsByTags 得到的列表)jQuery 对象(比如 $("div") )伪数组是一个 Object,而真实的数组是一个 Array。
伪数组存在的意义,是可以让普通的对象也能正常使用数组的很多方法
这篇关于数组相关内容的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20RabbitMQ教程:新手入门指南
- 2024-11-20Redis教程:新手入门指南
- 2024-11-20SaToken教程:新手入门指南
- 2024-11-20SpringBoot教程:从入门到实践
- 2024-11-20Java全栈教程:从入门到实战
- 2024-11-20Java微服务系统教程:入门与实践指南
- 2024-11-20Less教程:初学者快速上手指南
- 2024-11-20MyBatis教程:新手快速入门指南
- 2024-11-20QLExpress教程:初学者快速入门指南
- 2024-11-20订单系统教程:从入门到实践的全面指南