JavaScript数组类型(Array)操作方法汇总
# 关于数组
- 数组的length属性不是只读的
检测数组
value instanceof Array
Array.isArray(value)
1
2
2
转换方法
- toLocaleString() 与toString()相同
- toString() 返回数组中每个值的字符串形式用逗号分隔拼接而成的字符串
- valueOf() 返回数组本身
# join() 转换方法 (不改原数组)
接收一个参数,用作分隔符的字符串,然后返回包含所有数组项的字符串。
var arr = ['red','blue','green']
var arrStr = arr.join('|') // "red|blue|green"
arr.join() // "red,blue,green"
arr.join('') // "redbluegreen"
1
2
3
4
5
2
3
4
5
# 栈方法,后进先出 push() 、pop() (改变原数组)
- push() 向数组末尾添加成员,返回总长
- pop() 移除数组末尾一个成员,返回该成员
# 队列方法,先进先出 push()、shift() 、unshift() (改变原数组)
shift() 移除数组首个成员,返回该成员
unshift() 在数组前面添加成员,返回总长
push()和shift() 形成队列方法
unshift和pop() 形成反方向队列方法
# 重排序方法 reverse() 反转 sort() 排序 (改变原数组)
- reverse() 反转数组项的顺序
- sort() 接收一个函数作为参数,函数接收两个参数。
- 自定义排序:函数内,如果第一个参数应该位于第二个之前,则手动返回一个负数,如果两个参数相等,手动返回0,如果第一个参数应该位于第二个参数之后,则手动返回一个正数。
// 升序
arr.sort(function(a,b){
if(a < b) {
return -1
} else if (a > b) {
return 1
} else {
retunr 0
}
})
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
简写:
arr.sort((a,b) => {
return a-b // 升序, b-a 降序
})
1
2
3
2
3
# 操作方法 concat() 拼接,slice() 切片,splice() 移接
concat() 拼接数组 (不改原数组)
var arr1 = ['a','b'] var arr2 = arr1.concat('c','d') // ['a','b','c','d']
1
2slice() 切片(不改原数组)
- slice(起始位置 [, 结束位置]) 返回起始位置到结束位置的成员,不包含结束位置。
var arr1 = [1,2,3,4,5] var arr2 = arr1.slice(1,3) // [2,3] var arr3 = arr1.slice(2) // [3,4,5]
1
2
3splice() 移接 (改变原数组)
- splice(起始位置, 要删除的个数,要插入的项)
- 要插入的项 可以有0个或多个
- splice() 始终返回一个数组,该数组成员中包含原始数组中被删除的项,如果没有则返回空数组。
- 数组最强大的方法,可用于删除、插入、替换操作
arr = [1,2,3,4] arr.splice(1,1) // [2] arr // [1,3,4] arr = [1,2,3,4] arr.splice(2,0,'a') // [] arr // [1,2,'a',3,4] arr = [1,2,3,4] arr.splice(3,1,'a') // [4] arr // [1,2,3,'a']
1
2
3
4
5
6
7
8
9
10
11
12- splice(起始位置, 要删除的个数,要插入的项)
# 位置方法 indexOf()、lastIndexOf()
- 查找项的位置,没有则返回-1
- indexOf() 从前面开始找,lastIndexOf() 从后面开始找
# 迭代方法 every()、some() 、filter()、map() 、forEach() (都不会改变原数组)
5个迭代方法,每个方法都接收两个参数:
- 在每项上运行的函数
- 运行函数的作用域对象
函数接收三个参数:
- 数组项的值
- 该项的索引
- 数组本身
every() 如果函数对每项都返回true,则返回true
例:判断数组每一项是否都大于2
var numbers = [1,2,3,2,1] var result = numbers.every((item,index,array) => { return item > 2 }) result // false
1
2
3
4
5
some() 如果函数对任一项返回true,则返回true
例:判断数组是否包含大于2的值
var numbers = [1,2,3,2,1] var result = numbers.some((item,index,array) => { return item > 2 }) result // true
1
2
3
4
5
filter() 返回函数会返回true的项组成的数组
例:过滤掉数组中小于等于2的数
var numbers = [1,2,3,4,5] var result = numbers.filter((item,index,array) => { return item >2 }) result // [3,4,5]
1
2
3
4
5
map() 返回每次函数调用的结果组成的数组
例:给数组每一项乘以2
var numbers = [1,2,3,4,5] var result = numbers.map((item,index,array) => { return item * 2 }) result // [2,4,6,8,10]
1
2
3
4
5
forEach() 循环数组每一项,没有返回值
例:循环每一项
var numbers = [1,2,3,4,5] numbers.forEach((item,index,array) => { // 做一些操作 })
1
2
3
4
# 归并方法 reduce() reduceRight()
reduce() 归并为
reduceRight() 从右边归并
这两个方法都会迭代数组所有项,然后构建一个最终结果并返回
方法接收两个参数: 每一项上调用的函数,归并基础的初始值
函数接收4个参数:前一个的值、当前值、当前值的索引、数组对象
例:求数组每一项之和
var numbers = [1,2,3,4,5] var result = number.reduce((prev,cur,index,arr) => { return prev + cur }) result // 15
1
2
3
4
5reduce()方法,第一次执行函数时,prev是数组的第一项,cur是数组的第二项
上次更新: 2024/01/30, 00:35:17
- 01
- linux 在没有 sudo 权限下安装 Ollama 框架12-23
- 02
- Express 与 vue3 使用 sse 实现消息推送(长连接)12-20