JavaScript中常用的数组方法

数组是计算机编程世界里最常见的数据结构,JavaScript中为我们提供了很多关于数组的API,熟练运用它们,十分有利于我们日常的开发。本文从几个方面总结了常用的数组方法。

一、数组的查询方法

1.Array.isArray():用来检测指定的值是否为一个对象,返回一个布尔值

参数:被检测的值

Array.isArray([1,2,3]) //true

2.includes():用来判断一个数组是否包含一个指定的值,若包含则返回true,不包含则返回false

参数:1.指定的值

​ 2.fromIndex(可选),表示从该索引开始搜索,默认为0

[1,2,3].includes(2) //true

3.indexOf():在数组中查找一个指定的值,返回首个被找到的元素在数组中的位置,若未找到则返回-1

参数:1.指定的值

​ 2.fromIndex(可选),表示从该索引开始搜索,默认为0,若为负数则表示从倒数第几个元素开始查找

[1,2,3,2].indexOf(2,-2) //3

4.lastIndexOf():此方法和indexOf()用法基本相同,区别是lastIndexOf是从数组的最后一个往前开始查找。

二、改变原数组的方法

1.pop():从数组中删除最后一个元素,并返回该元素的值

let arrarr = [1,2,3]
arrarr.pop() //3
console.log(arr) //[1,2]

2.push():将一个或多个元素添加到数组的末尾,并返回该数组的新长度

let arr = [1,2,3]
arr.push(4,5) //5
console.log(arr) //[1,2,3,4,5]

3.shift():从数组中删除第一个元素,并返回该元素的值

let arr = [1,2,3]
arr.shift() //1
console.log(arr) //[2,3]

4.unshift():将一个或多个元素添加到数组的开头,并返回该数组的新长度

let arr = [1,2,3]
arr.unshift(0) //4
console.log(arr) //[0,1,2,3]

5.reverse():此方法无参数,将数组中元素的位置颠倒,并返回该数组

let arr = [1,2,3]
arr.reverse() //[3,2,1]

6.sort():此方法对数组中的元素进行排序(谷歌浏览器使用的是快速排序,火狐浏览器使用的是归并排序),并返回排序后的数组

let arr = [2,5,3,4]
arr.sort((a,b) =>{
    return a - b
})

参数:compareFunction,用来指定按某种顺序进行排序的函数,如果省略则按照字符串中各个字符的Unicode位点进行排序,如果指明了compareFunction,则按照compareFunction的返回值进行排序,此函数会传入两个参数,a和b,若返回值小于0则a会排在b的前面,若等于0则位置不变,若大于0,则b会排在a的前面

7.splice():此方法是数组中非常重要的方法,功能十分强大,可以对数组中的元素进行删除,替换和添加操作,返回被删除的元素组成的数组,若没有删除元素则返回空数组

参数:1)start,指定开始的位置,如果超出了数组长度则从数组末尾开始添加,如果为负数则表示从数组末尾开始的第几位,如果负数的绝对值大于数组的长度,则表示从0开始

2)deleteCount,表示要移除的数组元素的个数。如果大于start之后的所有元素的总数则,将start之后的所有元素删除,如果为0或负数则表示不移除元素

3)item1,item2,要添加的元素,从start的位置插入。

let arr = [1,2,3,4,5]
//删除元素
arr.splice(1,1) 
console.log(arr) //[1,3,4,5]
//添加元素
arr.splice(1,0,2) 
console.log(arr) //[1,2,3,4,5]
//替换元素
arr.splice(1,1,6,7) 
console.log(arr) //[1,6,7,3,4,5]
三、数组的迭代方法

1.forEach():对数组的每个元素执行一次给定的函数。无返回值

参数:callback,为每个元素执行的函数,该函数可接受1-3个参数

​ 1)element,当前正在处理的元素

​ 2) index ,当前正在处理的元素的索引

​ 3)array,正在操作的数组

​ thisArg,执行回调函数时,this的值

let arr = [1,2,3]
arr.forEach((ele,index) = {
    console.log(ele + index)
})
//1
//3
//5

2.every():测试一个数组内的所有元素是否都能通过某个指定函数的测试。返回一个布尔值

参数:callback,为每个元素执行的函数,该函数可接受3个参数

​ 1)element,当前正在处理的元素

​ 2) index ,当前正在处理的元素的索引

​ 3)array,正在操作的数组

​ thisArg,执行回调函数时,this的值

let arr = [1,2,3]
let ret = arr.every((ele,index) = {
    return ele > 1;
})
console.log(ret) //false

3.some():测试一个数组内是否至少有一个元素通过某个指定函数的测试。返回一个布尔值

参数:callback,为每个元素执行的函数,该函数可接受3个参数

​ 1)element,当前正在处理的元素

​ 2) index ,当前正在处理的元素的索引

​ 3)array,正在操作的数组

​ thisArg,执行回调函数时,this的值

let arr = [1,2,3]
let ret = arr.some((ele,index) = {
    return ele > 1;
})
console.log(ret) //ture

4.filter():返回由所有通过的测试的元素组成的新数组,否则返回空数组

参数:callback,为每个元素执行的函数,该函数可接受3个参数

​ 1)element,当前正在处理的元素

​ 2) index ,当前正在处理的元素的索引

​ 3)array,正在操作的数组

​ thisArg,执行回调函数时,this的值

let arr = [1,2,3]
let ret = arr.filter((ele,index) = {
    return ele > 1;
})
console.log(ret) //[2,3]

5.find():返回首个通过测试的元素的值,否则返回undefined

参数:callback,为每个元素执行的函数,该函数可接受3个参数

​ 1)element,当前正在处理的元素

​ 2) index ,当前正在处理的元素的索引

​ 3)array,正在操作的数组

​ thisArg,执行回调函数时,this的值

let arr = [1,2,3]
let ret = arr.find((ele,index) = {
    return ele > 1;
})
console.log(ret) //2

6.findIndex():返回首个通过测试的元素的索引值,若没有找到则返回-1

参数:callback,为每个元素执行的函数,该函数可接受3个参数

​ 1)element,当前正在处理的元素

​ 2) index ,当前正在处理的元素的索引

​ 3)array,正在操作的数组

​ thisArg,执行回调函数时,this的值

let arr = [1,2,3]
let ret = arr.findIndex((ele,index) = {
    return ele > 1;
})
console.log(ret) //1

7.map():返回由每次执行函数的返回值组成的数组

参数:callback,为每个元素执行的函数,该函数可接受3个参数

​ 1)element,当前正在处理的元素

​ 2) index ,当前正在处理的元素的索引

​ 3)array,正在操作的数组

​ thisArg,执行回调函数时,this的值

let arr = [1,2,3]
let ret = arr.every((ele,index) = {
    return ele + 1;
})
console.log(ret) //[2,3,4]

8.reduce():返回函数累计处理的结果

参数:callback,为每个元素执行的函数,该函数可接受3个参数

​ 1)accumulator,累计器累计回调的返回值,初始值为initialValue

​ 2) currentValue ,数组中正在处理的元素

​ 3)index,数组中正在处理的元素的索引

​ 4)array,调用reduce的数组

​ initialValue,作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。

let arr = [1,2,3]
let ret = arr.reduce((pre,cur,index) = {
    pre += cur 
},0)
console.log(ret) //6
四、数组的拷贝、扁平化等操作

1.Array.from():方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例

参数:1)arrayLike,想要转换成数组的伪数组对象或可迭代对象

​ 2)mapFn(可选),为一个回调函数,新数组中的每个元素都会执行该回调函数

​ 3)thisArg,执行回调函数 mapFn 时 this对象

2.concat():用于合并两个或多个数组,并返回合并后的数组。

let arr = [1,2,3]
arr.concat([4,5,6],[7,8,9]) //[1,2,3,4,5,6,7,8,9]

3.slice():返回从原数组中截取的一个新的数组对象

参数:begin(包含),提取处的起始索引,若为负数则表示从倒数第几个元素开始提取

​ end(不包含),表示提取处的终止索引,若为负数则表示从倒数第几个元素结束提取

let str = [1,2,3,4]
str.slice(1,3) //[2,3]

4.flat():按照一个指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

参数:depth,指定提取嵌套数组的结果深度,默认为1

let arr = [1,2,[3,4],[5,6]]
arr.flat() // [1, 2, 3, 4, [5, 6]]
arr.flat(2) //[1, 2, 3, 4, 5, 6]
arr.flat(Infinity) //[1, 2, 3, 4, 5, 6]

5.join():将一个数组的所有元素按照指定连接符来连接,返回连接后的字符串

参数:separator,指定的连接符

let arr = [1,2,3]
arr.join('-') //'1-2-3'

6.keys():返回包含数组中的每个索引值的Array Iterator对象

7.values():返回包含数组中的每个元素的值的Array Iterator对象

8.entries():返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对

好了,以上就是本期内容啦,如果对你有帮助的话,麻烦帮忙点个赞,感谢!!!

更多内容,请关注微信公众号鑫鑫之火可以撩原

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值