总结一些数组常用方法
- push
向数组后添加元素,返回值为数组的length。会改变原数组
let arr = [1, 2, 3]
let res = arr.push(4)
console.log(res) // 4
- pop
删除数组尾部的元素,返回值为删除的元素。会改变原数组
let arr = [1, 2, 3]
let res = arr.pop()
console.log(res) // 3
- shift
删除数组的头部,返回值为删除的元素。会改变原数组 - unshift
向数组头部添加元素,返回值为数组的length。会改变原数组 - sort
将数组排序,排序规则看返回值。会改变原数组
let arr = [10, 4, 35]
let res = arr.sort((a, b) => a - b)
console.log(res) // [4, 10,35]
let res1 = arr.sort((a, b) => b - a)
console.log(res1) // [35, 10, 4]
- reverse
反转数组,会改变原数组
let arr = [1, 2, 3]
let res = arr.reverse()
console.log(res) // [3, 2, 1]
- join
把数组中所有元素放入一个字符串,元素通过指定分隔符进行分割
let arr = ['ellie', 'harry', 'love']
let res = arr.join('123')
console.log(res) // ellie123harry123love
- concat
合并两个或多个数组,不改变原有数组,返回新数组
let arr = ['ellie', 'harry', 'love']
let res = arr.concat([1],3,[7, 8])
console.log(res) // ['ellie', 'harry', 'love', 1, 3, 7, 8]
- splice
通过删除 或者替换现有元素 或者原地添加新的元素修改数组,会改变原数组
splice(a, b, c,…)
a:指定起始索引值
b:指定要删除多少个值
c:c以及以后的值都是要插入的值
let arr = ['ellie', 'harry', 'love']
let res = arr.splice(1, 1, 'hello', 'world')
console.log(res) //
splice有异议
- slice
截取数组,第一个参数是起始下标,第二个参数是结束下标的前一位
let arr = ['ellie', 'harry', 'love']
let res = arr.slice(1, 2)
console.log(res) // ['harry']
- indexOf
查找数组中是否存在某个值,如果存在返回下标,反之返回-1 - lastIndexOf
与indexOf相同,不过返回的是指定元素在数组汇总最后一个的索引下标 - toString
数组转换为字符串
let arr = ['ellie', 'harry', 'love']
let res = arr.toString()
console.log(res) // ellie,harry,love
- reduce
接收一个参数作为累加器,数组中的每个值从左到右开始缩减,最终计算为一个值
array.reduce(callback(total, currentValue, currentIndex, arr), initialValue)
total:必需。初始值,或计算结束后的返回值
currentValue:必需。当前元素
currentIndex:非必需。当前元素的索引
arr:非必需。当前元素所属的数组对象,本身
initialValue:作为第一次调用callback函数时的第一个参数的值,如果没有提供初始值,则将使用数组中的第一个元素
let arr = [1, 2, 3]
let res = arr.reduce((total,cur)=>{
return total + cur
})
console.log(res) // 6
- every
用于检测数组所有元素是否都符合指定条件,返回值为boolean,数组中必须全部值元素都满足条件才返回true,否则false
let arr = [1, 2, 3]
let res = arr.every(item => item > 0)
console.log(res) // true
let res2 = arr.every(item => item > 2)
console.log(res2) // false
- some
跟every相反,只要有一项满足,就返回true - filter
用于过滤数组内的符合条件的值,返回值为满足条件的数组对象,如果没有一个符合条件,返回空数组。会创建新数组
let arr = [1, 2, 3]
let res = arr.filter(item=>{
return total + cur
})
console.log(res) // 6
- map
将数组中元素依次传入方法中,并将方法的返回结果组成新的数组返回,会创建新数组
let arr = [1, 2, 3]
let res = arr.map(item=>{
return item + 3
})
console.log(res) // [4, 5, 6]
- forEach
方法对数组的每个元素执行一次给定的函数,返回值为undefined
let arr = [1, 2, 3]
let res = arr.forEach(item=>{
return item + 3
})
console.log(res) // undefined
着重点在于让数组的每一项做点什么事儿
let arr = [1, 2, 3]
let res = arr.forEach(item=>{
console.log(item + 3) // 4 5 6
})
- find
该方法返回数组中满足提供的测试函数的第一个元素的值
let arr = [3, 4, 5]
let res = arr.find(item => { item > 3})
console.log(res) // 4
- findIndex
该方法返回数组中满足提供的测试函数的第一个元素的数组下标 - flat
该方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回
let arr = [3, 4, 5, [7, 3, [5]]]
let res = arr.flat()
let res2 = arr.flat(1)
console.log(res) // [3, 4, 5, 7, 3, 5]
console.log(res2) // [3, 4, 5, 7, 3, [5]]
- fill
- 该方法用一个固定值填充一个数组中从起始索引到终止索引内到全部元素。会改变原数组
array.fill(value, start, end)
value:必需。要填充的值
start:非必需。开始填充的下标
end:非必需。结束填充的下标+1
let arr = [3, 4, 5, 7]
let res = arr.fill(3)
let res2 = arr.fill(3, 2 ,4)
console.log(res) // [3, 3, 3, 3]
console.log(res2) // [3, 4, 3, 3]
- includes
- 该方法用来判断一个数组是否包含一个指定的值,如果是则返回true,否则返回false
第一个参数
let arr = [3, 4, 5, 7]
console.log(arr.includes(3)) // true
可以从指定位置进行判断
let arr = [3, 4, 5, 7]
console.log(arr.includes(3, 1)) // false。从下标为1的位置以后开始比较