JavaScript常用数组方法详解
这里创建了一个arr1
数组
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
基本操作
获取数组长度
arr1.length
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| console.log(arr1.legth) |
| |
获取数组成员索引
arr1.indexOf(val1,val2)
,val1
为要查找的数组成员
,val2
为查询的开始位置(Number)
val2
为空时,默认从下标为0
开始搜索
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| console.log(arr1.indexOf(5)) |
| |
| console.log(arr1.indexOf(5,4)) |
| |
| console.log(arr1.indexOf(5,6)) |
| |
注: 当 要查找的数组成员 不存在数组时,返回值为:-1
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| console.log(arr1.indexOf(10)) |
| |
增加操作
unshift()
arr1.unshift(val,...)
: 向数组的开头添加一个或者多个元素 , 并且返回新的数组的长度
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| console.log(arr1.unshift(110,120)) |
| |
push()
arr1.push(val,...)
: 与arr1.unshift()
用法相同 , 区别在于 arr1.push()
是在数组的末尾添加一个或多个元素 , 同样返回值为新的数组长度
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| console.log(arr1.unshift(110,120)) |
| |
concat()
arr1.concat()
: 插入给定的一个或多个元素,能够把传递的所有参数按顺序添加到数组的尾部 , 返回一个新数组,而不是在原来的基础上添加新元素
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| let arr2 = arr1.concat('NueXini','JavaScript') |
| console.log(arr1) |
| |
| console.log(arr2) |
| |
splice()
arr1.splice(start, deleteCount,val1,val2,...)
参数 |
解释 |
值 |
start |
插入位置 |
一般是0 或arr1.length |
deleteCount |
要删除的个数 |
0 为不删除 , 增加操作的时候一般填0 |
val |
当增加操作的时候添加的元素 |
(可选)可以是元素,也可以是数组 |
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| arr1.splice(0,0,'NueXini','JavaScript') |
| console.log(arr1) |
| |
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| arr1.splice(arr1.length,0,'NueXini','JavaScript') |
| console.log(arr1) |
| |
| |
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| arr1.splice(0,2,'NueXini','JavaScript') |
| |
| console.log(arr1) |
| |
删除操作
shift()
arr1.shift()
: 删除数组的第一项,并返回删除前第一个元素的值。若该数组删除前为空,则返回undefined
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| console.log(arr1.shift()) |
| |
| let arr2 = ['NueXini'] |
| console.log(arr2.shift()) |
| |
| let arr3 = [] |
| console.log(arr3.shift()) |
| |
pop()
arr1.pop()
: 删除数组的最后一项,并返回删除前最后一个元素的值。若该数组删除前为空,则返回undefined
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| console.log(arr1.pop()) |
| |
| let arr2 = ['NueXini'] |
| console.log(arr2.pop()) |
| |
| let arr3 = [] |
| console.log(arr3.pop()) |
| |
splice()
arr1.splice()(start, deleteCount)
: start
起始位置(从0开始计数) , deleteCount
移除数组元素的个数 , 为空时则从起始位置删除到最后 , 返回被删除的元素
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| console.log(arr1.splice(0)) |
| |
| let arr2 = ['NueXini','JavaScript'] |
| console.log(arr2.splice(1,1)) |
| |
排序操作
sort()
arr1.sort( sortFunction )
,sortFunction
可选
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| arr1.sort() |
| |
| |
| console.log(arr) |
| |
arr1.sort( compareFunction )
,compareFunction
可选
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| arr1.sort(function(x, y){return y-x}) |
| console.log(arr) |
| |
reverse()
arr1.reverse()
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| arr1.reverse() |
| console.log(arr) |
| |
compareFunction
是一个用于比较排序的函数,如果省略compareFunction
参数,元素将按ASCII字符顺序的升序进行排列。而数组的sort()方法的内部排序机制是基于冒泡算法
筛选操作
filter()
arr1.filter(function(currentValue,index,arr), thisValue)
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| function gt(num) {return num > 5} |
| console.log(arr1.filter(gt)) |
| |
| let arr2 = [7,4,1,8,5,2,0,9,6,3] |
| function gt2(num) {return num > 10} |
| console.log(arr2.filter(gt2)) |
| |
参数 |
类型 |
解释 |
function(currentValue, index,arr) |
必须 |
函数,数组中的每个元素都会执行这个函数 |
currentValue |
必须 |
当前元素的值 |
index |
可选 |
当前元素的索引值 |
arr |
可选 |
当前元素属于的数组对象 |
thisValue |
可选 |
对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined" |
includes()
arr1.includes(searchElement, fromIndex)
| let arr1 = [7,4,1,8,5,2,0,9,6,3] |
| console.log(arr1.includes(7)) |
| console.log(arr1.includes(10)) |
| console.log(arr1.includes(7,0)) |
| console.log(arr1.includes(7,1)) |
参数 |
类型 |
解释 |
searchElement |
必须 |
需要查找的元素 |
fromIndex |
可选 |
从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。 |
更多
请参考: https://www.runoob.com/jsref/jsref-obj-array.html
NueXini : Enjoy it ~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通