持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情
一、前言
数组方法有很多,在开发中我们通常都是根据场景去用不同的数组方法,有的方法可能长期不用了,就比较容易忘记,我就整理和归纳一下我们数组方法到底有哪些,方便平时忘记了来看看。
二、改变原数组的方法
1. arr.splice()
删除元素并且向数组添加新元素 array.splice(index,howmany,item1,.....,itemX)
index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。item1, ..., itemX: 可选。向数组添加的新项目。- 注:数组返回的是被删除的数组
let arr = [1,2,3,4,5]
console.log(arr.splice(1,2)) //[2,3]
console.log(arr) //[1,4,5]
2. arr.sort()
排序数组
- 没有参数:则按照元素的字母升序,如果不是元素不是字符串的话,会调用toString()方法将元素转化为字符串的Unicode(万国码)位点,然后再比较字符。
- 排序规则函数:排序规则函数接受两个参数:a , b,返回一个正数或负数。
升序不变返回负,降序改变返回正 - 注:数组返回的是被改变后的数组
let arr = [1,2,3,4,5]
arr.sort((a,b)=>{
return a-b; // 升序不变返回负,不变指参数位置不变
})
console.log(arr) //[1,2,3,4,5]
arr.sort((a,b)=>{
return b-a;// 降序改变返回正
})
console.log(arr) //[5,4,3,2,1]
3. arr.pop()
删除数组最后的一个元素并且返回
let arr = [1,2,3,4,5]
console.log(arr.pop()) //5
console.log(arr) //[1,2,3,4]
4. arr.push()
数组的末尾添加元素并返回新长度push(item1, item2...)
let arr = [1,2,3,4,5]
console.log(arr.push(6,7)) //7
console.log(arr) //[1, 2, 3, 4, 5, 6, 7]
5. arr.shift()
删除数组第一个元素并返回
let arr = [1,2,3,4,5]
console.log(arr.shift()) //1
console.log(arr) //[2, 3, 4, 5]
6. arr.unshift()
数组头部添加元素并返回新长度unshift(item1, item2...)
let arr = [1,2,3,4,5]
console.log(arr.unshift(-1,0)) //7
console.log(arr) //[-1, 0, 1, 2, 3, 4, 5]
7. arr.reverse()
颠倒数组中元素的顺序
let arr = [1,2,3,4,5]
console.log(arr.reverse()) //[5, 4, 3, 2, 1]
console.log(arr) //[5, 4, 3, 2, 1]
8. arr.fill()
用指定元素填充数组fill(item, start, end)
item(必需): 要填充数组的值start(可选): 填充的开始位置,默认值为0end(可选):填充的结束位置,默认是为this.length
let arr = ['a','b','c']
let re = arr.fill(6,0,3)
console.log(re) //[6, 6, 6]
console.log(arr) //[6, 6, 6]
9. arr.copyWithin
指定位置的成员复制到其他位置并返回替换后的新数组copyWithin(target, start, end)
target(必需):从该位置开始替换数据。如果为负值,表示倒数。start(可选):从该位置开始读取数据,用哪些数据来替换,默认为 0。如果为负值,表示倒数。end(可选):到该位置前停止读取数据,默认等于数组长度。使用负数可从数组结尾处规定位置。
let arr = [1,2,3,4,5]
//意思是从下标1开始被替换,下标2开始-下标4之前
let arr1 = arr.copyWithin(1,2,4)
console.log(arr1) //[1,3,4,4,5]
//下标0被替换 -2表示从4开始 -1表示最后
console.log(arr.copyWithin(0, -2, -1)) //[4,2,3,4,5]
总结
- 替换前后数组的长度保持不变
- 读取数据在终止位置的前一个位置停止,并且保存这个位置的数据不动
- 读取出来了多少数据,就需要在前面按顺序替换掉多少数据
三、不改变原数组
1. arr.slice()
截取数组片段,返回新数组slice(start, end)
- start:(可选)规定从何处开始选取,负数表示从数组尾部算起
- end: (可选)没指定则一直截取到数组最后一个元素,包括最后一个。指定了则截取到指定位置前一个元素。
let arr = [1,2,3,4,5]
console.log(arr.slice(1,2)) //[2]
console.log(arr)//[1, 2, 3, 4, 5]
2. arr.join()
按照连接符将数组连接成字符串并返回字符串join(str)
- 没有参数: 则使用
,连接 - 有参数: 按照参数指定连接符连接
let arr = ['luck','xl']
console.log(arr.join()) //luck,xl
console.log(arr.join('+')) //luck+xl
3. arr.concat
合并多个数组并返回concat(item1,item2...)
- 参数可以是数组对象:等待合并的数组
- 参数也可以是具体的值(元素): 等待合并的元素
let a = [5,2,0]
let b = [1,3,1,4]
let re1 = a.concat(b)
console.log(re1) //[5, 2, 0, 1, 3, 1, 4]
let re2 = a.concat([1,3,1,4])
console.log(re2) //[5, 2, 0, 1, 3, 1, 4]
4. toLocaleString()
数组转字符串
- 是将数组中每一个元素调用自身的
toLocaleString()方法后用,连接得到的字符串 - 可以理解为先把数组中每个元素都调用下
toLocaleString()方法,再把得到的结果数组调用join()方法
let arr=[{name:'pubdreamcc'},24,'cc',new Date()]
console.log(arr.toLocaleString()) //[object Object],24,cc,2022/6/23 18:00:00
5. toString()
数组转字符串
- 它是定义在
Object原型上面的一个方法,用来把一个对象转成字符串,在这里其实同join(无参数)方法效果一样
let arr = [1,2,3,4,5]
console.log(arr.toString()) //1,2,3,4,5
6. arr.indexOf()
查找数组某个元素并返回其第一次出现位置下标indexOf(item, start)
item(必需): 需要查找的元素值start(可选): 规定在数组中开始检索的位置(0-array.length)- 如果没找到,返回
-1注意: indexOf()不能识别NaN, 因为 NaN 与任何数不相等,包括自身
let arr = [1,2,3,4,5]
console.log(arr.indexOf()) //-1
console.log(arr.indexOf(1)) //0
console.log(arr.indexOf('1')) //-1
7. arr.lastIndexOf()
查找数组某个元素并返回其最后一次出现位置下标lastIndexOf(item, fromIndex)
- 该方法与
indexOf()恰好相反,查找不到同样返回-1 item(必需): 被查找的元素fromIndex(可选): 逆向查找开始位置,默认值数组的长度-1,即查找整个数组。
let arr= ['a','b','c',1,2,3,'a','b','c',4,5] //数组长度为10
console.log(arr.lastIndexOf('c',4)) //从下标4开始往前找 返回下标2
console.log(arr.lastIndexOf('c')) //默认不选,即查找整个数组 返回8
console.log(arr.lastIndexOf('c',-11)) //-1 数组不会被查找
8. arr.includes()
查找数组是否包含某个元素返回布尔值includes(item, fromIndex)
item(必需):要查找的元素fromIndex(可选): 默认值为0,参数表示搜索的起始位置,接受负值。正值超过数组长度,数组不会被搜索,返回false。负值绝对值超过长数组度,重置从0开始搜索。
let arr = ['a','b','c',NaN]
console.log(arr.includes(NaN)) //true 能识别NaN
console.log(arr.includes('c',100)) //false 超过数组长度 不搜索
console.log(arr.includes('a',-4)) //true 从倒数第四个元素开始搜索
console.log(arr.includes('a',-100)) //true 负值数值超过数组,搜索整个数组
好了,以上就是本篇文章的分享,感谢阅读!