数组中的常用方法
map
做映射关系处理,
1.数组过滤获取每一项的一个字段
let arr = [{id:1,name:'张三'},{id:2,name:'李四'}]
let ids = arr.map(d => d.id);
2.数组映射每一项增加字段或者对象
let arr = [{id:1,name:'张三'},{id:2,name:'李四'}]
let newArr = arr.map(d => {return {...d,age:'20'}})
flatMap
做映射处理并展开,数组过滤如果每一项的某个字段是一个数组,映射完成后会变成双重数组,flatMap会将内层数组给去掉
let arr = [{id:1,name:'张三',hobbys:[1,2,3]},{id:2,name:'李四',hobbys:[4,5,6]}]
let newArr = arr.flatMap(d => d.hobbys)
// [1,2,3,4,5,6]
join
将数组拼接成字符串 : 返回拼接好的字符串
arr.join(’-’) //‘1-2-3’
push
将数组最后添加1或多项 : 返回修改后数组的长度
arr.push(4) //[1,2,3,4]
pop
将数组末尾删除一项 : 返回移除的项
arr.pop() //[1,2]
unshift
和push相似. 将参数添加到数组第一项 : 返回数组的长度
arr.unshift(0) //[0,1,2,3]
shift
和pop相似. 删除数组第一项 : 返回移除的项; 数组为空的则返回underfined
arr.shift() //[2,3]
sort
数组从小到大排列, 字母也可以: 返回变化后的原数组
arr.sort() // [1,2,3]
reverse
翻转数组 : 返回翻转后的变化后的原数组
arr.reverse() // [3,2,1]
concat
拼接两个数组,原数组不变 : 返回拼接后的新数组
arr.concat([5, 6]) // [1,2,3,5,6]
slice
截取数组.原数组不变
有两个参数: 都是数组下标
参数有一个时: 返回去掉这些项后的新数组
arr.slice(1) // [2,3]
参数有两个时: 返回截取的新数组
arr.slice(1,2) // [2]
splice
可以删除,添加,替换数组元素, 改变原数组
参数有两项时:
从第0项开始,删除两项. 返回被删除的数组元素 [1,2]
arr.splice(0,2) / / [3]
参数有三项及以上:
从第二项开始删除一项:将2删了,添加进10,11进数组.
返回被删除的数组元素
arr…splice(2, 1, 10,11) // [1,10,11,3]
如果第二个参数为0则代表只增加元素 : 返回空数组
arr…splice(2, 0, 10,11) // [1,2,10,11,3]
indexof
查找数组中的元素 : 返回要找到的元素索引. 找不到 : 返回-1
arr.indexof(2) // 2
includes
includes() 查找数组中的元素有则 : 返回 true否则false
arr.includes(1) // true
注: 区别, 增强了对NaN的判断, 用indexof在数组中找NaN必定返回-1
而includes方法则会正确找到
fill
填充数组, 改变原数组: 返回改变后的原数组
arr.fill(22) //[22, 22, 22]
forEach
历数组.进行函数运算: 没有返回值
三个参数分别为
1.遍历的那个元素
2.对应的索引
3.数组本身
filter
遍历数组,过滤符合条件的数组元素 : 返回合条件的新数组
every和some
遍历数组, 判断元素是否在数组中存在 : 返回true或者false
every : 全部符合才返回true
some: 有一项符合就返回true
reduce
arr.reduce((sum, it) => { return sum + it },0)
find和findIndex
find() 找到第一个符合条件的成员 : 返回数组成员
fundIndex() 找到第一个符合成员的索引 : 返回索引值