目录
语法:
var arr = new Array() -- 小括号中放数字 表示有几个空的小空间
var arr = [] -- 大括号中放数字5,表示有一个小空间,存放了数字5
数组中可以存储多个不同类型的数据,只是我们在项目中使用的时候,一般是将同类型数据存储在数组中
数组的操作
访问 数组中的数据
数组[下标]
设置 数组中的数据
数组[下标] = 值
获取数组中元素的个数/长度
数组.length
设置长度
数组.length = 数字
第一个元素的下标一定是0,最后一个元素的下标一定是 length-1
删除
delect 数组[下标]
只能删除小空间中的数据,不能删除小空间
数组的遍历
for(var a = 0; a < arr.length; a++) {
arr[a]
}
基础类型和引用类型:
基础/简单类型:
number/string/boolean/undefined/null/symbol
存储:
直接将具体数据存储在栈内存中
赋值:
将具体的数据复制给另一个变量
比较:
基础类型比较类型和值
引用类型:
object/array/function
存储:
将具体数据存储在堆内存中,将堆内存中的内存地址存储在栈内存中
赋值:
将堆中的地址复制给另一个变量 - 导致两个变量共享同一个数据
比较:
引用类型比较地址
数组方法:
7种会改变原数组的方法
1.unshift --- 给数组开头添加一个或多个元素
语法:
数组.unshift(1个或多个元素) - 返回新数组的长度
2.shift --- 将数组的第一个元素删掉
语法:
数组.shift() - 返回被删掉的元素
3.push --- 给数组末尾添加一个或多个元素
语法:
数组.push(1个或多个元素) - 返回新数组长度
4.pop --- 删除数组的最后一个元素
语法:
数组.pop() - 返回被删掉的元素
5.splice --- 在数组的任意一个位置 添加、删除、修改 1个或多个元素
语法:
数组.splice(开始下标, 要删除的元素个数, 在删除位置要放进去的1个或多个元素) - 返回所有被删除的元素组成的数组
删除:
数组.splice(开始删除的下标,要删除元素的个数)
添加:
数组.splice(开始删除的下标,要删除元素的个数(0),要添加的元素)
修改:
数组.splice(开始删除的下标,要删除元素的个数,要添加的元素)
6.reverse --- 翻转数组
语法:
数组.reverse() - 返回翻转后的数组
7.sort --- 排序
语法:
数组.sort() - 进行了升序排列,默认使用字符串规则进行排列 - 返回排序后数组
按照数字的大小进行排列:
语法:
数组.sort(function(a, b) {
return a - b // 升序
return b - a // 降序
})
参数不是函数的
8.slice:从数组中截取出其中一部分
语法:
数组.slice(开始下标, 结束下标) - 返回截取出来的那一部分组成的数组
注意:包前不包后
省略第二个参数就默认截取到数组末尾
两个参数都不加,就会从开头截取到末尾
9.concat:将1个或多个 元素或数组 合并成一个更大的数组
语法:数组.concat(1个或多个元素或数组) - 返回更大的新数组
10.indexOf:查找元素在数组中第一次出现的下标
语法:
数组.indexOf(元素) - 找到了就返回下标,找不到返回-1
我们通常会利用找到和找不到的返回值不同,来判断一个元素是否在数组中
语法:
数组.indexOf(元素, 开始下标) - 从开始下标开始向后找元素第一次出现的下标
11.lastIndexOf:查找元素在数组中最后一次出现的下标
语法:
数组.lastIndexOf(元素) - 找到了就返回下标,找不到返回-1
语法:
数组.lastIndexOf(元素, 下标) - 将指定下标当做数组的结尾,找元素在数组中最后一次出现的下标
12.join:使用指定的连接符将数组中每个元素连接成一个字符串
语法:
数组.join(连接符) - 返回字符串
不指定连接符默认使用逗号连接
将所有元素合在一起
includes
参数是函数的
forEach:用于遍历数组
语法:
数组.forEach(function(value, index, array) {
value - 代表遍历出来的每个元素
index - 代表每个元素的下标
array - 代表当前正在遍历的这个数组
})
forEach不遍历空元素
filter:将数组中满足指定条件的元素都组成一个新的数组并返回
语法:
var brr = 数组.filter(function(value, index, array) {
value - 代表遍历出来的每个元素
index - 代表每个元素的下标
array - 代表当前正在遍历的这个数组
return 条件
})
map:将数组中每个元素都处理成新的元素,所有新的元素组成新的数组返回
语法:
var brr = 数组.map(function(value, index, array) {
value - 代表遍历出来的每个元素
index - 代表每个元素的下标
array - 代表当前正在遍历的这个数组
return 处理后的新元素
})
every:判断数组中是否所有元素都满足指定的条件 - 都满足就返回true,有一个不满足就返回false
语法:
var bool = 数组.every(function(value, index, array) {
value - 代表遍历出来的每个元素
index - 代表每个元素的下标
array - 代表当前正在遍历的这个数组
return 条件
})
some:判断数组中是否至少有一个是满足条件的 - 只要有一个是满足条件的就返回true,都不满足条件就返回false
语法:
var bool = 数组.some(function(value, index, array) {
value - 代表遍历出来的每个元素
index - 代表每个元素的下标
array - 代表当前正在遍历的这个数组
return 条件
})
find:从数组中找到满足条件的第一个元素 - 找到了就返回元素,找不到就返回undefined
语法;
var ele = 数组.find(function(value, index, array) {
value - 代表遍历出来的每个元素
index - 代表每个元素的下标
array - 代表当前正在遍历的这个数组
return 条件
})
findIndex:从数组中找到满足条件的第一个元素的下标 - 找到就返回下标,找不到就返回-1
语法;
var ele = 数组.findIndex(function(value, index, array) {
value - 代表遍历出来的每个元素
index - 代表每个元素的下标
array - 代表当前正在遍历的这个数组
return 条件
})
reduce:归并 - 数组求和
语法:
数组.reduce(function(a, b) {
a第一次代表第一个元素,第二次开始代表上一次返回的结果
b第一次代表第二个元素,第二次代表第三个元素,...
})
冒泡排序:
var arr = [1, 2, 3, 4]
for(var b = 0; b < arr.length - 1; b++) { // 0 1 2
for(var a = 0; a < arr.length - 1 - b; a++) { // 0 1 2
if(arr[a] < arr[a+1]) {
var tmp = arr[a]
arr[a] = arr[a+1]
arr[a+1] = tmp
}
}
}
console.log(arr);
选择排序:
var arr = [9,1,5,3,4,8,6,2,7]
for(var b = 0; b < arr.length - 1; b++) {
for(var a = b + 1; a < arr.length; a++) {
if(arr[b] < arr[a]) {
var tmp = arr[b]
arr[b] = arr[a]
arr[a] = tmp
}
}
}
console.log(arr);