Appearance
push
数组末尾追加元素,原始数组改变
@params 参数个数不固定,类型也不固定
@return [number] 新增后数组的长度
另一种方法 arr[arr.length] = xxx
pop 删除数组最后一项
原始数组改变
@params 无
@return 被删除的那一项内容
另一种方法arr.length--
shift 删除数组第一项
原始数组改变
@params 无
@return 被删除的那一项内容
unshift 数组开头追加元素
原始数组改变
@params 参数个数不固定,类型也不固定
@return [number] 新增后数组的长度
splice 实现数组的增删改
原始数组改变
删除:arr.splice(n, m) 从数组索引n开始(包括索引n),删除m个元素,返回结果是被删除元素组成的新数组,m不写就是从n开始删除到末尾,arr.splice(0) 清空原来数组,把原来数组的每一项放到新数组中
修改:(删除一部分,然后用别的值替换 ),arr.splice(n, m, x) 从索引n开始(包括索引n),删除m个,用x替换删除的内容,返回结果是被删除元素组成的新数组,arr.splce(2, 2, 'foo', 100, ...)
增加:arr.splice(n, 0, x) 从索引n开始,一个都不删除,x插入到索引n的前面,返回结果是空数组,arr.splce(2, 0, 'foo', 100, ...)
删除数组最后一项
js
arr.length--
arr.pop()
arr.splice(arr.length - 1)
arr.splice(arr.length - 1, 1)
delete arr[arr.length - 1] // 虽然可以删除,但是length长度不会改变,不推荐
arr.reverse().shift().reverse() // 数组倒过来然后删除第一项,再倒回去数组末尾追加一项
js
arr.push('xxx')
arr.[arr.length] = 'xxx'
arr.splice(arr.length, 0, 'xxx')数组查询
原始数组不改变
slice 实现数组的查询,从索引n开始(包括n),查找到索引m(不包含m)处,把查找到的内容以新数组方式返回
js
slice(n) // 索引n查找到数组末尾(包括数组末尾)
slice(0, -1) // 索引n查找到倒数第二项
slice(0) // 原始数组的每一项都找到,以新数组返回
arr.slice() // 实现数组浅拷贝
arr.slice(0) // 实现数组浅拷贝数组拼接
原始数组不会改变
concat 实现数组的拼接,把多个数组或多个值最后拼接为一个数组,返回结果是拼接后的数组
js
arr.concat('foo', arr2)
arr.concat() // 实现数组浅拷贝
arr.concat([]) // 实现数组浅拷贝数组转换为字符串
原始数组不改变
toString 把数组每一项按逗号分隔拼接成字符串
js
[1, 2, 3].toString() => '1,2,3'原始数组不改变
join 把数组每一项按指定分隔符拼接成字符串
js
[1, 2, 3].join() // 等价于toString,也会忽视null/undefined
[1, 2, 3].join('+') // '1+2+3' 如果这个字符串能变为js表达式执行,则代表数组求和
let str = [1, 2, 3].join('+')
let total = eval(str)数组是否包含某一项 / 指定项的索引
indexOf / lastIndexOf
js
indexOf([item]) // 获取当前项在数组中第一次出现位置的索引,如果不包含,返回-1
lastIndexOf([item]) // 获取当前项在数组中最后一次出现位置的索引,如果不包含,返回-1includes 验证数组是否包含某一项,返回布尔值
数组排序
改变原始数组
reverse 原始数组反转,返回结果是反转后的原始数组
js
const res = arr.reverse()
res === arr // true改变原始数组
sort 原始数组按照规则进行排序,返回结果是排序后的原始数组,支持传递回调函数,基于自定义的排序规则,进行排序
js
arr.sort() // 默认是按照每一项的每一个字符编码来进行比较排序的,就导致直接写sort,不能处理两位及两位以上的内容排序
arr.sort((a, b) => a - b) // 升序
arr.sort((a, b) => b - a ) // 降序数组迭代
- forEach
数组求和
1.eval(arr.join('+')) // 如果出现非有效数字,最后结果是NaN
2.for
js
arr.forEach((item, index) => {
item = Number(item)
if (isNaN(item)) continue
total += item
})- map 在forEach的基础上支持返回值,不改变原始数组,返回一个由返回值组成的新数组
- find 返回数组中满足条件的第一个元素的值。否则返回undefined arr.find(cur => cur > 10)
- filter 返回数组中满足条件的所有元素的值。否则返回[] arr.find(cur => cur > 10)
- every
- some
- reduce
- ...