数组是计算机编程世界里最常见的数据结构,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对象,该对象包含数组中每个索引的键/值对。
好了,以上就是本期内容啦,如果对你有帮助的话,麻烦帮忙点个赞,感谢!!!
更多内容,请关注微信公众号鑫鑫之火可以撩原