数组
1.数组的基本用法
<script>
// 1.声明变量的语法
let arr = new Array()
// 2.往数组中存放值
// 用下标来存放
arr[0] = 10
arr[1] = 20
arr[2] = 30
console.log(arr);
// 3.修改数组中的值
// 也是用下标来修改的
arr[1] = 100
arr[3] = 10 // 比数组大的话就是 添加数组 你没有添加值就是undefined
console.log(arr);
/* 4.下标的几个专业名词
1.下标:
2.索引:
3.元素:就是数组中存放的值 */
</script>
2.数组的声明方法
1.语法:
let arr =[10,13,12]
3.数组的长度length
1.数组的长度,就是数组的元素的个数
打印数组会发现数组里面会有一个length属性表示数组的长度
let arr = [12,13,14]
console.log(arr);
console.log(arr.length); //打印一下数组的长度length
2.数组的长度,是数组的最大值的下标+1
let arr2 = [12, 12, 10]
arr2[7] = 50
console.log(arr2.length, 22);//8
3.数组的长度(数组名.length) 是可以改(大小)
1.改变数组的长度
let arr7 = [10, 20]
arr7[5] = 10
console.log(arr7);
2.改变数组的长度变小
let arr3 = [1, 2, 3, 4, 5, 6, 7]
arr3.length = 3
//会丢失元素,丢失了就找不回来了 可以把arr3.length = 3 删除就可以找回来了
arr3.length = 6 //如果在这里修改就找不回来改变的数组了
console.log(arr3);
4.往数组中添加新元素
let arr = [20,30]
arr[arr.length] = 2 // 在后面添加
arr[arr.lengtth] = 50 // 在后面添加
console.log(arr);
5.练习
let arr = []
for(let = i; i <= 10 ; i++) {
arr[arr.length] = i *10
}
console.log(arr); //输出 10 20 30 40 50 60 70 80 90 100
4.遍历数组
1练习
let arr = [10,20,30,40,50,60]
for(let i = 0; i < arr.length; i++ ) {
console.log(arr[i])
}
5.翻转数组
let arr = [60, 50, 40, 30, 20, 10]
let arr1 = []
for(let i = arr.length - 1; i >= 0; i--) {
arr1.push(arr[i])
}
console.log(arr1);
2.翻转数组
let arr = [60, 50, 40, 30, 20, 10]
for (let i = 0; i < arr.length / 2; i++) {
let arr1 = arr[i]
arr[i] = arr[arr.length - 1 - i]
arr[arr.length - 1 - i] = arr1
}
console.log(arr);
6.斐波拉契数列
<script>
let arr = [1, 1]
let sum = +prompt('你想要知道这几个数列的第几个数吗')
for (let i = 2; i <= sum; i++) {
arr[i] = arr[i - 1] + arr[i - 2]
}
console.log(arr, 18);
</script>
7.for循环跟标签数组的元素生成
let arr =['我是li标签','我是li标签','我是li标签','我是li标签','我是li标签']
for (let i = 0; i < arr.length; i++) {
docuent.write(`<li>${arr[i]}</li>`)
}
8.数组去重
for (let i = 1; i < arr.length; i++) {
// // 假设一个不在的数组里面的
let flag = false
// // 验证
for (let index = 0; index < array.length; index++) {
// // 判断他们在不在数组里面
if (arr[i] == array[index]) {
flag = true
break
}
}
// // 判断false就要 true的就不要
if (flag == false) {
array[array.length] = arr[i]
}
}
2.练习去重
let arr = [10,20,10,50,20,10]
for(let i = 1; i < arr.length; i++) {
let lang = array.includes(arr[i])
if(lang == false){
array.push(arr[i])
}
}
console.log(array) //输出 10 20 50
9.引用类型
1.简单数据类型 : number unll undefined Boolean string
1简单数据类型 是存在技术栈中
let num = 10
let num2 = num
num = 20
console.log(num,num2)//20 10
2.复杂数据类型 :object function array
1.数组在内存栈中是存在地址的
let arr = [10,20,30,40,50]
let arr2 = arr
arr2[0] = 100
console.log(arr[0]) //100
2.它两是存在同一个地址 然后arr2数据改变了 内存堆也跟着改变
10.检测数据类型
1.错误检测数据类型
let arr = [10,20,30]
typeof 不能检测数组的类型
console.log(typeof arr) // object
2.array.isArray(数组名)
1.如果真是一个数组就返回true 不是数组就返回 false
let arr = [10,20,30]
console.log(Array.isArray(arr)); //true
console.log(Array.isArray(100)); //false
3.instanceof检测数据类型
console.log(100 instanceof Array);//false
console.log(arr instanceof Array);true
4.万能检测数据类型
console.log(Object.prototype.toString.call(arr)); //Array
console.log(Object.prototype.toString.call(123));//Nemder
console.log(Object.prototype.toString.call('你好'));//String
console.log(Object.prototype.toString.call(true));Boolean
console.log(Object.prototype.toString.call(undefined))//undefined
11.二维数组
1.数组中的元素又是一个数组,这样子的数组又称为 二维数组
let arr = [10,20,30,[30,50,30,40],20,30]
let arr2 = [
[10,20,30],
[40,50,60],
[70,80,90]
]
2.取值
console.log(arr[3][3]) //40
console.log(arr2[1][2])//60
console.log(arr2[0][2])//30
3.遍历二维数组
<script>
let arr = [10, 20, 30, [30, 50, 30, 40], 20, 30]
for (let i = 0; i < arr.length; i++) {
//对arr[i]判断 如果数组就继续遍历 不是就直接打印
if (Array.isArray(arr)) {
//遍历 arr 数组中的里面的数组
for (let index = 0; index < arr[i].length; index++) {
console.log(arr[i][index]);
}
} else {
console.log(arr[i])
}
}
</script>
12.冒泡排序
1。从最小大最大
<script>
let arr = [2, 1, 3, 9, 5, 4, 3]
for (let i = 0; i < arr.length - 1; i++) {
for (let index = 0; index < arr.length - 1 - i; index++) {
// 判断语句改为大于就是 重最大到最小
if (arr[index] > arr[index + 1]) {
let tiem = arr[index]
arr[index] = arr[index + 1]
arr[index + 1] = tiem
}
}
}
console.log(arr)
</script>