1.填充和复制
fill(value,start,end)
value:必填,填充的值
start:可选,开始填充的位置
end:可选,停止填充的位置(默认为到最后),负数代表倒数
/***************************/
const arr = [0,0,0,0,0]
arr.fill(5) // [5,5,5,5,5]
arr.fill(5,3) // [0,0,0,5,5]
arr.fill(5,1,3) // [0,5,5,0,0]
arr.fill(5,-1) // [0,0,0,0,5]
copyWithin(target,start,end)
target:必须,复制到指定的目标索引位置
start:可选,元素复制的起始位置
end:可选,停止复制的索引位置(默认为到最后),负数代表倒数
/***************************/
const arr = [1,2,3,4,5]
arr.copyWithin(0,3) // [4,5,3,4,5]把45搬到了前边
2. 转化方法
toString()
返回用逗号分隔的字符串
const arr = ['red','green','blue']
arr.toString() // red,green,blue
valueOf()
返回本身
const arr = ['red','green','blue']
arr.valueOf() // ['red','green','blue']
join()
const arr = ['red','green','blue']
arr.join() // red,green,blue
arr.join("-") // red-green-blue
3.前后增删
push(value,value)
在数组后方插入元素,返回修改后的数组,该方法会修改数组本身。
pop()
删除数组最后一个元素,并返回被删除元素,该方法会改变数组本身。
unshift(value,value)
在数组前方插入元素,返回修改后的数组长度,该方法会修改数组本身。
shift()
删除数组的第一个元素,并返回被删除元素,该方法会改变数组本身。
4.排序方法
sort()
sort会在原数组上进行排序
/***************************/
const arr = [0, 1, 5, 10, 15];
arr.sort() // [0, 1, 10, 15, 5]
arr.sort((a, b) => a - b) // 正序排序
arr.sort((a, b) => b - a) // 倒序排序
reverse()
翻转数组所有元素,该方法会改变原先数组。
5.操作方法
concat()
concat()方法用于连接两个或多个数组,不会改变原先数组
slice()
slice() 方法可从已有的数组中返回选定的元素。返回一个新的数组,包含从 start 到 end (不包括end)的数组元素。
splice()
splice(index,length,newValue)
6.归并方法
reduce()
reduceRight()
7.搜索和位置
indexOf()
lastIndexOf()
includes()
find()
findIndex()
const arr = [1,2,3,4,5]
arr.indexOf(2) //1(返回索引)
arr.lastIndexOf(3) //2
arr.includes(4) //true
arr.find(item=>item>2) //3
arr.findIndex(ite,=>item>2) //2
8.迭代器方法
keys()
values()
entries()
keys()方法返回数组索引的迭代器,
values()方法返回数组元素的迭代器,
entries()方法返回索引值对的迭代器。
const arr = ['one','two','three','four']
console.log(Array.from(array.keys()))
[0,1,2,3]
console.log(Array.from(array.values()))
['one','two','three','four']
console.log(arr.from(array.entries()))
[ [ 0, 'one' ], [ 1, 'two' ], [ 2, 'three' ], [ 3, 'four' ] ]
9.迭代方法
forEach()
arr.forEach((item,index,arr)=>{})
map()
let newArr = arr.map((item,index,arr)=>item + 1)
filter()
let newArr = arr.filter(item=>return item>2)
//可以使用filter()方法来移除数组中的undefined、null、NAN等值
let arr = [1, undefined, 2, null, 3, false, '', 4, 0]
arr.filter(Boolean) //[1, 2, 3, 4]
every()
arr.every(item=>item>0) //全部符合true
some()
arr.every(item=>item>4) //一个符合true
10.其他
for…in
主要对数组或对象的属性进行循环操作
for(let key in obeject){}
for(let index in arr){}
for…of
const arr = ['a','b','c','d']
for(let item of arr){
log(item) //a,b,c,d
}
for…of 遍历获取的是对象的键值,for…in 获取的是对象的键名;
for… in 会遍历对象的整个原型链,性能非常差不推荐使用,而 for … of 只遍历当前对象不会遍历原型链;
对于数组的遍历,
for…in 会返回数组中所有可枚举的属性(包括原型链上可枚举的属性),
for…of 只返回数组的下标对应的属性值;
flat()
//在ES2019中,flat()方法用于创建并返回一个新数组,这个新数组包含与它调用flat()的数组相同的元素,只不过其中任何本身也是数组的元素会被打平填充到返回的数组中:
[1, [2, 3]].flat() // [1, 2, 3]
[1, [2, [3, 4]]].flat() // [1, 2, [3, 4]]
//在不传参数时,flat()默认只会打平一级嵌套,如果想要打平更多的层级,就需要传给flat()一个数值参数,这个参数表示要打平的层级数:
[1, [2, [3, 4]]].flat(2) // [1, 2, 3, 4]