数组
数组:
存放一些数据的集合
也是引用数据类型(复杂数据类型)
数据/对象/函数
数组和对象将来如何选择?
示例:
商品的详情存放到某一个对象中, 比如: 商品名, 商品价格, 商品折扣, 商品描述....
商品列表假设有 100个商品, 那么你就有100个商品详情, 按照上述的封装那么你有100个对象
我们可以将 这 100个 对象, 存放到某一个数组中, 进行维护管理
2.创建数组
1.字面量的方式创建(使用场景最多的方式)
var arr = []
console.log(arr)
2.内置构造函数的方式创建
var arr = new Array()
console.log(arr)
2.1创建一个有长度的数组
var arr = new Array(5)
console.log(arr)
2.2创建一个有内容的数组
var arr = new Array( 100 , 200 , 300 , 'QF001')
console.log(arr)
数组内部是存放一些数据的,数据的类型
但是在开发时,一般需要将一个数组内的数据类型限制为一个
比如:纯字符串数组,纯数字数组,纯对象数组
数组的长度与索引
数组的长度
数组的长度并不固定,取决于数组内部有多少元素
查看方式
1.打印数据,在控制台展开数据,找到最后的length
2.打印 数组名.length
当 数组的长谷 代表当前数组为空数组
var arr = [ 1 , 2 , 3 , 4 , 5 ]
console.log(arr)
console.log(arr.length)
数组的索引(下标)
有什么用?
表明 数组 的这个位置上 有什么内容
注意:
下标是固定的,永远是 0 1 2 3 4 5 6 .....
但是下标对应的内容,不是固定的
var arr = [1,2,3,4,5,]
console.log(arr)
console.log('原数组',arr)
consolr.log(arr[0]) //会得到当前数组下标0这个位置上的值 ,, consolr.log(arr[3]) //会得到当前数组下标0这个位置上的值
通过数组的下标,我们也可以修改数组中的某一个元素
arr[2] = '新的数据'
console.log('修改后的数据: ',arr)
遍历数组
需求:拿到数组各个位置的值
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9,]
//下标 0 1 2 3 4 5 6 7 8
console.log(arr[0])
console.log(arr[1])
console.log(arr[2])
for(var i = 0;i < arr.length; i++){
console.log(arr[i])
}
课堂练习
1.找出数组中的最大值
2.计算数组中所有内容相加的和
3.封装一个函数,名为 includes
功能为 传入一个数组和数字,判断这个数组中是否包含这个数字
包含返回true, 否则返回 false
4.封装一个函数,名为 indexOf 功能为 传入一个数组和数字,判断这个数组是否包含这个数字包含返回 这个数字的下标(从左到右第一个)
否则返回 -1
冒泡排序
算法/设计模式
这两个不是一个东西,但是都是为了解决某一类问题的最佳解法
//冒泡排序(基础版,没有优化)
var arr = [9, 8, 7, 6, 5, 4, 3, 2, 1]
for(var j = 0; j < arr.length; j++){
for(var i = 0; i < arr.length; 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, 8, 7, 6, 5, 4, 3, 2, 1]
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 num = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = num
}
}
}
选择排序
var arr = [9, 3, 6, 2, 4, 1, 8, 5, 7]
for(var k = 0; k < arr.length; k++){
//1.假设 k 是最小值的下标,保存 minIndex
var minIndex = k
//2.循环会帮我们找到真是最小值的下标,并保存在变量 minIndex
for (var i = k + 1; i < arr.length; i++){
if(arr[minIndex] > arr[i]){
minIndex = i
}
}
//3.交换 真实最小值(下标 minIndex) 和 假设最小值 (k) 的位置
var temp = arr[k]
arr[k] = arr[minIndex]
arr[minIndex] = temp
}
console.log(arr)