一、操作数组中的项
1、push&pop
let arr = [1,2,3,4,5]
arr.push(6) //arr变为[1,2,3,4,5,6],返回值为6
arr.pop() //arr变为[1,2,3,4,5],返回值为6
2、shift&unshift
let arr = [1,2,3,4,5]
arr.shift() //arr变为[2,3,4,5],返回值为1
arr.unshift(8) //arr变为[6,2,3,4,5],返回值为5(数组长度)
3、concat
let arr = [1,2,3,4,5]
let newarr = arr.concat(6,[7,8],[[9,10]]) //不改变原数组
console.log(newarr) //[1, 2, 3, 4, 5, 6, 7, 8, [9,10]] //会展开一层数组
4、slice&splice
slice()方法接收一个或两个参数,表示要返回项的起始和结束位置,不改变原数组,返回从起始到结束位置的所有项,不包括结束项,若参数为负数则用数组长度加上该数来确定位置。
let arr = [1,2,3,4,5]
let newarr = arr.slice(1,3)
console.log(newarr) //[2,3]
splice()方法可以删除、插入、替换数组中的项
删除时提供两个参数,要删除的第一项位置和要删除的项数,会改变原数组,返回删除的项。
let arr = [1,2,3,4,5]
let newarr = arr.splice(1,3)
console.log(arr) //[1,5]
console.log(newarr) //[2,3,4]
插入时提供三个参数,起始位置、0(要删除的项数)、要插入的项。会改变原数组,返回删除的项。
let arr = [1,2,3,4,5]
arr.splice(1,0,6,7,8)
console.log(arr) //[1, 6, 7, 8, 2, 3, 4, 5]
替换时提供三个参数,起始位置、要删除的项数、要插入的项。会改变原数组,返回删除的项。
let arr = [1,2,3,4,5]
let newarr =arr.splice(1,3,6,7,8)
console.log(arr) //[1, 6, 7, 8, 5]
console.log(newarr) //[2, 3, 4]
5、indexOf&lastIndexOf
这两个方法提供两个参数,要查找的项和查找起点位置的索引(可选)。
let arr = [1,2,3,4,2]
let index =arr.indexOf(2)
let lastindex = arr.lastIndexOf(2)
console.log(index) //1
console.log(lastindex) //4
6、sort&reverse
sort()方法默认会对数组中每一项调用toString()方法,然后比较得到的字符串。
let arr = [13,2,6,8,4]
arr.sort()
console.log(arr) //[13, 2, 4, 6, 8]
由于默认是按照字符串排序,如果我们想按照数值排序,可以传入一个比较函数作为参数,比较函数中return正数则要进行交换。
let arr = [13,2,6,8,4]
arr.sort((a,b)=>{return a-b})
console.log(arr) //[2, 4, 6, 8, 13]
reverse()方法会反转数组顺序
let arr = [13,2,6,8,4]
arr.reverse()
console.log(arr) //[4, 8, 6, 2, 13]
二、遍历操作方法
1、forEach
对数组中每一项运行回调函数,没有返回值,改变原数组,不能终止(break、return失效)。
let arr = [13,2,6,8,4]
arr.forEach((item,index,array)=>{
array[index] = item * 2
})
console.log(arr) //[26, 4, 12, 16, 8]
2、map
对数组中每一项运行回调函数,返回操作后的新数组,不改变原数组
let arr = [13,2,6,8,4]
let newarr = arr.map((item,index,array)=>{
return item * 2
})
console.log(newarr) //[26, 4, 12, 16, 8]
3、filter
对数组中每一项运行回调函数,返回该函数返回true的项组成的数组,不改变原数组
let arr = [13,2,6,8,4]
let newarr = arr.filter((item,index,array)=>{
return item > 2
})
console.log(newarr) //[13, 6, 8, 4]
4、reduce
接收两个参数,分别为回调函数和初始值,其中回调函数接收四个参数,对数组中每一项运行回调函数,这个函数返回的值会作为第一个参数传给下一项,从而达到累加的效果,返回累加的结果,不改变原数组。
let arr = [13,2,6,8,4]
let res = arr.reduce((prev,cur,index,array)=>{
return prev+cur
},0)
console.log(res) //33
5、every&some
对数组中每一项运行回调函数,every是该函数对每一项都返回true才返回true,some是该函数对任一项返回true就返回true。
let arr = [13,2,6,8,4]
let res = arr.every((item,index,array)=>{
return item > 2
})
console.log(res) //false
let arr = [13,2,6,8,4]
let res = arr.some((item,index,array)=>{
return item > 2
})
console.log(res) //true