一、认识数组
数组是一种数据类型,他也是属于引用数据类型(复杂数据类型)
根据字面意思来看,存放数字的一个组合,但这样说有点片面了
更完善的说法:数组是存放一些数据的集合
换句话说:我们把数据放在一个盒子中,这个盒子就叫做数组
注意:数组内的数据是有顺序的
二、创建数组
2.1.字面量的方式
语法:var arr=[1, 2, 3, 'q', 'w', 'e']
2.2内置构造函数的方式
语法1:var arr=new Array() 创建一个空数组
语法2:var arr=new Array(5) 创建一个有长度的数组
语法3:var arr=new Array(1,2,3) 创建一个有内容的数组
三、数组的length属性
语法:数组名.length
length 翻译过来就是长度的意思
代表这个数组内有多少个成员
四、数组的索引
索引 也有人叫做下标
就是指一个数据,在这个数组内排列在第几个位置上
注意:在JS中,索引(下标)是从0开始计数的
如果想要获取到数组指定位置的值,可以通过下标来获取
语法:数组名[下标] -- 能够获取到这个数组中对应下标的成员具体的值
五、遍历数组
想办法拿到数组的每一个成员
想拿到数组所有成员,需要先想办法拿到数组的所有下标
规律:所有数组的下标都是从0开始,然后到数组.length-1结束
六、冒泡排序
属于数组排序的算法之一
其实就是通过一种算法,将一个乱序的数组,调整为指定顺序的数组(从大到小/从小到大)
什么是算法?
解决某一个问题最简单/最高效的方式
// 准备一个乱序数组,将数组内的数据用冒泡排序的方法,按照从小到大的顺序排列
var arr = [9, 3, 6, 2, 4, 1, 8, 5, 7]
console.log('原始数组', arr)
for (var j = 0; j < arr.length - 1; j++) {
for (var i = 0; i < arr.length - 1 - j; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
}
console.log('冒泡排序后的数组', arr)
七、选择排序
var arr = [9, 3, 6, 2, 4, 1, 8, 5, 7]
// 0 1 2 3 4 5 6 7 8
console.log('原始数组', arr)
/**
* 第几次循环 假设谁是最小值 和谁交换 内层循环从几开始
*
* k===0 1 0 0 1
* k===1 2 1 1 2
* k===2 3 2 2 3
* ……
*/
var arr = [9, 3, 6, 2, 4, 1, 8, 5, 7]
// 0 1 2 3 4 5 6 7 8
console.log('原始数组', arr)
for (var k = 0; k < arr.length; k++) {
var minIndex = k
for (var i = k + 1; i < arr.length; i++) {
if (arr[minIndex] > arr[i]) {
minIndex = i
}
}
var temp = arr[k]
arr[k] = arr[minIndex]
arr[minIndex] = temp
}
console.log('排序后的数组', arr)
八、数据类型之间的区别
数据类型分为两种
1.基本数据类型(简单数据类型)
2.引用数据类型(复杂数据类型)
1.存储
变量的数据存储的地方是内存中,内存分为两个 栈内存,堆内存
基本数据类型: 存储在栈内存中,比如:string number undefined null boolean
复杂数据类型: 将数据样本存放在堆内存中,比如对象或者数组或者函数,
然后将指向该内存的地址,存放在数组名或者对象名或者函数名中
数组/对象/函数 名 存放在栈内存中
面试题:数据类型之间有什么区别?
基本数据类型有哪些?然后他们存储的地方是栈内存中
引用数据类型有哪些,然后他们数据本体存放的地方是堆内存中,然后变量名存储的位置是栈内存中
基本存储类型内部存储的是值;引用数据类型内部存储的是地址
2.赋值
基本数据类型:
赋值以后,两个变量之间没有任何关系,相当于将我自己的某一个东西,复制一份给你,然后你的就是你的,我的就是我的
例子:我有一张考试卷,然后我复制一份给你,然后你在卷子上书写答案,并不会影响到我原本的这张卷子
复杂数据类型:
因为变量内部存储的是指向堆内存的地址,所以在赋值的时候,其实是将这个地址给到了另一个变量
那么相当于这两个变量存储的是同一个钥匙,所以操作其中一个变量的时候,会影响另一个变量
例子:我房间有一个开门的钥匙,我将我的钥匙复制一份给到你,那么此时我们两个共同拥有了一个房间的钥匙
此时如果我对房间的布局做了修改,那么你进入房间的时候,能看到布局的修改
此时如果你将房间所有的东西都偷走,那么我进入房间的时候,能看到房间所有东西都被偷走了
3.比较
基本数据类型: 就是值的比较
引用数据类型: 比较的时候,比较的是存储地址
4.传参
基本数据类型: 将值拷贝一份传递给形参,在函数内修改不会影响外界
引用数据类型: 将存储地址赋值给形参,在函数内修改会影响外界