Skip to content

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]) // 获取当前项在数组中最后一次出现位置的索引,如果不包含,返回-1

includes 验证数组是否包含某一项,返回布尔值

数组排序

改变原始数组

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
  • ...