数组的方法有哪些呢?看下图:
这是定义在数组原型对象上的方法,常用的有:
concat
every
filter
find
findIndex
forEach
includes
indexOf
join
map
pop
push
reduce
shift
slice
splice
some
unshift
// 还有一些也很常用但没有定义在原型对象上的:
isArray
of
from
在日常开发种,经常会用到的基本就这些,剩下的上场率都不高。
接下来,温故一下:
- concat 拼接数组
- every 对数组中每一项运行给定函数,如果该函数的每一项都返回true,则返回true。
const arr = [1, 2, 3, 4, 5]
const flag = arr.every(item => {
console.log(item)
return item < 3
})
console.log(flag)
当有一项不满足时,直接返回,不继续执行。
- some 对数组中每一项运行给定函数,如果该函数的某一项都返回true,则返回true。
const arr = [1, 2, 3, 4, 5]
const flag = arr.some(item => {
console.log(item)
return item < 3
})
console.log(flag)
同样的,当有条件满足之后就返回结果,不再继续。
- filter 返回数组中满足条件的元素组成新的数组,不会改变原数组,也不会对空数组进行检测。
const arr = [1, 2, 3, 4, 5]
const newArr = arr.filter(item => item > 2)
console.log(newArr)
- find 根据某个条件查找匹配的值,返回查找到的值。一旦查找到匹配的值将立即停止。
const arr = [1, 2, 3, 4, 5]
const a = arr.find(item => {
console.log(item)
return item > 3
})
console.log('a:', a)
- findIndex 根据某个条件查找匹配的值,返回查找到的值的下标。一旦查找到匹配的值将立即停止。
const arr = [1, 2, 3, 4, 5]
const a = arr.findIndex(item => {
console.log(item)
return item > 3
})
console.log('a:', a)
- indexOf 查找某个元素是否存在,存在返回下标,不存在返回-1
const arr = [1, 2, 3, 4, 5]
const a = arr.indexOf(0)
const b = arr.indexOf(1)
console.log('a:', a, 'b:', b)
- includes 查找数组中是否存在某个值。在或判断中比较喜欢用这个替代,比如
type === 1 || type === 2
,可以用[1, 2].includes(type)
代替。
const arr = [1, 2, 3, 4, 5]
const a = arr.includes(0)
const b = arr.includes(1)
console.log('a:', a, 'b:', b)
- join 数组转字符串
const arr = [1, 2, 3, 4, 5]
const a = arr.join()
const b = arr.join('-')
console.log('a:', a, 'b:', b)
- forEach 遍历 没有返回值,即使显示的返回。
const arr = [1, 2, 3, 4, 5]
const a = arr.forEach(item => {
console.log(item)
return '返回的值' + item
})
console.log('a:', a)
- map 映射 有返回值,即使没有显示的return。
const arr = [1, 2, 3, 4, 5]
const a = arr.map(item => {
console.log(item)
return '返回的值' + item
})
console.log('a:', a)
- reduce 接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值,是es5新增的一个数组逐项处理的方法。具体可以查看reduce学习笔记
- slice 从已有的数组中返回选定的元素。接收两个参数start,end。返回一个新的数组,包含从 start 到 end (不包括该元素)的数组中的元素。
const arr = [1, 2, 3, 4, 5]
const a = arr.slice(1, 2)
console.log('a:', a)
- splice 从数组中添加/删除元素,然后返回被删除的元素。
const arr = [1, 2, 3, 4, 5]
const a = arr.splice(1, 0, 6)
const b = arr.splice(0, 1)
console.log('a:', a, 'b:', b, arr)
- isArray 判断是否是数组
const arr = [1, 2, 3, 4, 5]
console.log(Array.isArray(arr))
- of es6新增的创建数组的方法
const arr1 = Array.of(1,2,3)
console.log(arr1)
- from 将非数组对象转换成真实数组
const arr1 = new Set([1,2,3])
const arr2 = Array.from(arr1)
console.log(arr1, arr2)
- push 往数组里面添加元素,添加到数组末尾
- pop 从数组里面删除元素,从末尾开始删除
- unshift 往数组里面添加元素,添加到数组开头
- shift 从数组里面删除元素,从开头开始删除