1. Array.push()
向数组的末尾添加一个或多个元素,并返回新的数组长度。原数组改变。(参数不能是数组)
let arr = []
arr.push(1)
console.log(arr) // [1]
2. Array.pop()
删除并返回数组的最后一个元素,若该数组为空,则返回undefined。原数组改变。
let arr = [1,2,3]
let item= arr.pop()
console.log(arr) // [1,2]
console.log(item) // 3
3. Array.unshift()
向数组的开头添加一个或多个元素,并返回新的数组长度。原数组改变。
let arr = [1,2]
arr.unshift(3)
console.log(arr) // [3, 1, 2]
4. Array.shift()
删除数组的第一项,并返回第一个元素的值。若该数组为空,则返回undefined。原数组改变。
let arr = [1,2,3]
let item= arr.shift()
console.log(arr) // [2, 3]
console.log(item) // 1
5. Array.concat(arr1,arr2…)
合并两个或多个数组,生成一个新的数组。原数组不变。
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]
console.log(arr) //[1,2,3,4,5]
注:concat()还可以复制一个新数组
let copyArr=arr.concat();//copyArr的值和arr的相同
6. Array.join()
将数组的每一项用指定字符连接形成一个字符串。默认连接字符为 “,” 逗号。原数组不变。
参数:连接符
let arr=[1,2,3,4,5]
let str=arr.join()
console.log(str) //1,2,3,4,5
//如果连接符为空字符串,则会无缝连接
console.log(arr.join(“”)) //输出为12345
7. Array.reverse()
将数组倒序。原数组改变。
let arr=[1,2,3,4,5];
let newArr=arr. reverse();
console.log(newArr) //[5, 4, 3, 2, 1]
console.log(arr) //[5, 4, 3, 2, 1]
8. Array.sort()
对数组元素进行排序。按照字符串UniCode码排序,原数组改变。
①从小到大
let arr = [1,3,5,2,4,6]
let newArr = arr.sort()
console.log(arr) // [1, 2, 3, 4, 5, 6]
console.log(newArr) // [1, 2, 3, 4, 5,6]
②从大到小
let collation = function (a,b) {
return b-a
}
let arr = [1,3,5,2,4,6]
let newArr = arr.sort(collation)
console.log(arr) //[6, 5, 4, 3, 2, 1]
console.log(newArr) // [6, 5, 4, 3, 2, 1]
③按照数组对象中的某个值进行排序
let arr = [
{name: 'a',age:17},
{name: 'c',age:15},
{name: 'b',age:18},
]
function compare(key) {
return function sortAge(a,b) {
return a[key] - b[key]
}
}
let newArr = arr.sort(compare('age'))
console.log(newArr) //[{name: 'c', age: 15}, {name: 'a', age: 17},{name: 'b', age: 18}]
9.Array.slice()
截取复制数组指定位置的内容,返回一个新数组。原数组不变
参数:
array.slice(n, m),从索引n开始查找到m处(不包含m)
array.slice(n) 第二个参数省略,则一直查找到末尾
array.slice(0)原样输出内容,可以实现数组克隆
array.slice(-n,-m) slice支持负参数,从最后一项开始算起,-1为最后一项,-2为倒数第二项
10.Array.splice(index,howmany,arr1,arr2…)
在任意位置添加或删除元素,返回删除或被替换的值,如果没有被删除或替换则返回空数组。原数组改变。
参数:
array.splice(n),只有一个值时,从当前位置删除到数组末尾
let arr=[1,2,3,4,5]
let arr2=arr.splice(2)
console.log(arr) //[1, 2]
console.log(arr2) //[3, 4, 5]
array.splice(n,m) 有两个值时,第一个值n为删除的起始位置,第二个值m为删除的个数;
let arr=[1,2,3,4,5]
let arr2=arr.splice(2,1)
console.log(arr) //[1, 2, 4, 5]
console.log(arr2) //[3]
array.splice(n,m,)有三个或者多个值时,第一个值为插入元素的位置,第二个值为替换的个数,后面的值都为插入的新元素;
let arr=[1,2,3,4,5]
let arr2=arr.splice(2,1,6,7,8) //从索引值2开始替换掉1个元素,并且插入6,7,8
//如果第二个值为0,则不替换,直接插入6,7,8;
console.log(arr2) //[3]
console.log(arr) //[1, 2, 6, 7, 8, 4, 5]
11.Array.filter(function)
过滤数组中,符合条件的元素并返回一个新的数组。原数组不变。
参数:函数
let arr = [1,2,3,4,5]
let arr2 = arr.filter(x => x>3)
console.log(arr) //[1, 2, 3, 4, 5]
console.log(arr2) //[4, 5]
12.Array.every(function)
对数组中的每一项进行判断,若都符合则返回true,否则返回false。原数组不变。
let arr = [1,2,3,4,5]
let res = arr.every(x => x>3)
console.log(arr) //[1, 2, 3, 4, 5]
console.log( res) //false
13.Array.some(function)
对数组中的每一项进行判断,只要有一个满 足返回 true,否则返回false。原数组不变。
let arr = [1,2,3,4,5]
let res = arr.some(x => x>3)
console.log(arr) //[1, 2, 3, 4, 5]
console.log( res) //true
14.Array.reduce(function)
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
https://baijiahao.baidu.com/s?id=1709025744101285414&wfr=spider&for=pc
15.数组的查找方法
indexOf()
检测当前值在数组中第一次出现的位置索引,返回第一个符合条件的数组成员的索引,未找到返回-1。原数组不变
参数:array.indexOf(item,start) item:查找的元素 start:字符串中开始检索的位置。
find()
找出第一个符合条件的数组成员,未找到返回undefined。原数组不变。
参数:回调函数
let arr = [1,2,-3,4]
let item = arr.find(n => n < 0)
console.log(arr) //[1, 2, -3, 4]
console.log(item) //-3
findIndex()
找出第一个符合条件的数组成员的位置 ,未找到返回-1。原数组不变。
let arr = [1,2,-3,4]
let index= arr.findIndex(n => n < 0)
console.log(arr) //[1, 2, -3, 4]
console.log(index) //2
注:区别
indexOf无法识别NaN,findIndex可以借助Object.is做到
let arr = [1,2,-3,4, NaN]
let index= arr.findIndex(n => Object.is(NaN, n))
console.log(arr) //[1, 2, -3, 4, NaN]
console.log(index) //4
find,findIndex的回调函数可以接受三个参数:value--当前值,index--位置,arr--数组
find,findIndex都可以接受第二个参数,用来绑定回调函数的this对象
16.includes()
判断一个数组是否包含一个指定的值,包含返回true,不包含返回false。原数组不变
参数:
array.includes(item),只有一个值时,要查找的值
let arr = [1,2,-3,4, NaN]
let res= arr.includes( NaN)
console.log(arr) //[1, 2, -3, 4, NaN]
console.log(res) //true
array.includes(item,i),可以接受第二个参数,表示搜索的起始位置、默认为0,如果是负数,则表示倒数的位置,如果超出数组长度,则会重置从0开始
let arr = [1,2,-3,4, NaN]
let res= arr. includes ( NaN,-1 )
console.log(arr) //[1, 2, -3, 4, NaN]
console.log(res) //true
17.Array.from()
用于将两类对象转为真正的数组:类似数组的对象、可遍历对象
let arrLike = {
'0': 'a',
'1': 'b',
'2': 'c',
length: 4
}
let arr = Array.from(arrLike)
console.log(arr) //['a', 'b', 'c', undefined]
console.log(arrLike) //{0: 'a', 1: 'b', 2: 'c', length: 4}
注:所谓类似数组的对象,本质特征只有一点,即必须有length属性。因此,任何有length属性的对象,都可以通过Array.from转为数组,而这种扩展运算符无法转换
18.Array.of()
用于将一组值转换为数组,总是返回参数值组成的数组。如果没有参数,返回一个空数组
let arr = Array.of(1,3,5)
console.log(arr) //[1, 3, 5]
19.Array.copyWithin()
当前数组内部将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。原数组改变
参数:
target(必需):从该位置开始替换数据
start(可选):从该位置开始读取数据,默认为0。如果负数,表示倒数
end(可选):到该位置前停止读取数据(不包含)。如果为负数,表示倒数
let arr = [1,2,3,4,5]
let arr2 = arr.copyWithin(0,2,-1)
console.log(arr) //[3, 4, 3, 4, 5]
console.log(arr2) //[3, 4, 3, 4, 5]
接着面试官可能还会问你:
原数组改变的方法有:push pop shift unshift reverse sort splice
不改变原数组的方法有:concat map filter join every some indexOf slice forEach