方法列表

fill

fill 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。

参数说明

  1. fill (
  2. value: any,
  3. start: number, // [
  4. end: number, // )
  5. ) return array // 修改后的数组
参数名 是否必填 类型 说明
value any 用来填充数组元素的值
start number 起始索引,默认值为 0
end number 终止索引,默认值为 this.length

示例

  1. [1, 2, 3].fill(4) // [4, 4, 4]
  2. [1, 2, 3].fill(4, 1) // [1, 4, 4]
  3. [1, 2, 3].fill(4, 1, 2) // [1, 4, 3]
  4. [1, 2, 3].fill(4, 1, 1) // [1, 2, 3]
  5. [1, 2, 3].fill(4, 3, 3) // [1, 2, 3]
  6. [1, 2, 3].fill(4, -3, -2) // [4, 2, 3]
  7. [1, 2, 3].fill(4, NaN, NaN) // [1, 2, 3]
  8. [1, 2, 3].fill(4, 3, 5) // [1, 2, 3]
  9. Array(3).fill(4) // [4, 4, 4]
  10. [].fill.call({ length: 3 }, 4) // {0: 4, 1: 4, 2: 4, length: 3}
  11. var arr = Array(3).fill({}) // [{}, {}, {}]
  12. // 需要注意如果 fill 的参数为引用类型,会导致都执行同一个引用类型
  13. // 如 arr[0] === arr[1] 为 true
  14. arr[0].hi = "hi" // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]

pop

pop 方法从数组中删除最后一个元素,并返回该元素的值。此方法会更改数组的长度。

参数说明

  1. pop () return 被删除的元素

示例

  1. const myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
  2. const popped = myFish.pop()
  3. console.log(myFish) // ['angel', 'clown', 'mandarin']
  4. console.log(popped) // 'sturgeon'

push

push 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。

参数说明

  1. push (...args: any) return number 新被添加元素后数组的长度
参数名 是否必填 类型 说明
…args any …args添加到数组的末尾,如果不传则执行无效果

示例

  1. var names = ['张三', '李四']
  2. names.push('王五')
  3. console.log(names) // ['张三', '李四', '王五']
  4. names.push(['赵六'])
  5. console.log(names) // ['张三', '李四', '王五', ['赵六']]
  6. names.push()
  7. console.log(names) // ['张三', '李四', '王五', ['赵六']]

巧用

合并两个数组

  1. var vegetables = ['parsnip', 'potato']
  2. var moreVegs = ['celery', 'beetroot']
  3. // 将第二个数组融合进第一个数组
  4. // 相当于 vegetables.push('celery', 'beetroot')
  5. Array.prototype.push.apply(vegetables, moreVegs)
  6. console.log(vegetables)
  7. // ['parsnip', 'potato', 'celery', 'beetroot']

像数组一样使用对象

  1. var obj = {
  2. length: 0,
  3. addItem: function addElem(elem) {
  4. [].push.call(this, elem)
  5. }
  6. }
  7. obj.addItem({})
  8. obj.addItem({})
  9. console.log(obj.length) // 2
  10. console.log(obj)
  11. /**
  12. * {
  13. * 0: {}
  14. * 1: {}
  15. * addItem: ƒ addElem(elem)
  16. * length: 2
  17. * }
  18. */

reverse

reverse 方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。

参数

  1. reverse () return 被反转之后的数组

示例

  1. const array = ['one', 'two', 'three']
  2. const reversed = array.reverse()
  3. console.log(array) // ["one", "two", "three"]
  4. console.log(reversed) // ["three", "two", "one"]
  5. console.log(array) // ["three", "two", "one"]

shift

shift 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。

参数说明

  1. shift () return 从数组中删除的元素 如果数组为空则返回 undefined

示例

  1. let myFish = ['angel', 'clown', 'mandarin', 'surgeon']
  2. var shifted = myFish.shift()
  3. console.log(myFish) // ['clown', 'mandarin', 'surgeon']
  4. console.log(shifted) // angel

sort

详情见数组的遍历方法 sort

splice

splice 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。

参数说明

  1. splice (
  2. start: number, // [
  3. deleteCount: number,
  4. ...args: any
  5. ) return array // 由被删除的元素组成的一个数组,如果没有删除元素,则返回空数组。
参数名 是否必填 类型 说明
start number 指定修改的开始位置(从 0 计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从 -1 计数,这意味着 -n 是倒数第 n 个元素并且等价于 array.length-n
);如果负数的绝对值大于数组的长度,则表示开始位置为第 0 位。
deleteCount number 整数,表示要移除的数组元素的个数。如果 deleteCount 大于 start之后的元素的总数,
则从 start后面的元素都将被删除(含第 start 位)。
如果 deleteCount被省略了,或者它的值大于等于array.length - start(也就是说,如果它大于或者等于start之后的所有元素的数量),那么start之后数组的所有元素都会被删除。
如果 deleteCount是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。
…args any 要添加进数组的元素,从start位置开始。如果不指定,则 splice() 将只删除数组元素。

示例

  1. // 从索引 2 的位置开始删除 0 个元素,插入“drum”
  2. var myFish = ["angel", "clown", "mandarin", "sturgeon"]
  3. var removed = myFish.splice(2, 0, "drum")
  4. console.log(myFish) // ["angel", "clown", "drum", "mandarin", "sturgeon"]
  5. console.log(removed) // [] 没有元素被删除
  6. // 从索引 2 的位置开始删除 0 个元素,插入“drum” 和 "guitar"
  7. var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
  8. var removed = myFish.splice(2, 0, 'drum', 'guitar')
  9. console.log(myFish) // ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
  10. console.log(removed) // []
  11. // 从索引 3 的位置开始删除 1 个元素
  12. var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon']
  13. var removed = myFish.splice(3, 1)
  14. console.log(myFish) // ["angel", "clown", "drum", "sturgeon"]
  15. console.log(removed) // ["mandarin"] 被删除之后的元素形成一个数组
  16. // 从索引 2 的位置开始删除 1 个元素,插入“trumpet”
  17. var myFish = ['angel', 'clown', 'drum', 'sturgeon']
  18. var removed = myFish.splice(2, 1, "trumpet")
  19. console.log(myFish) // ["angel", "clown", "trumpet", "sturgeon"]
  20. console.log(removed) // ["drum"]
  21. // 从索引 0 的位置开始删除 2 个元素,插入"parrot"、"anemone"和"blue"
  22. var myFish = ['angel', 'clown', 'trumpet', 'sturgeon']
  23. var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue')
  24. console.log(myFish) // ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
  25. console.log(removed) // ["angel", "clown"]
  26. // 从索引 2 的位置开始删除 2 个元素
  27. var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon']
  28. var removed = myFish.splice(myFish.length - 3, 2)
  29. console.log(myFish) // ["parrot", "anemone", "sturgeon"]
  30. console.log(removed) // ["blue", "trumpet"]
  31. // 从索引 -2 的位置开始删除 1 个元素
  32. var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
  33. var removed = myFish.splice(-2, 1)
  34. console.log(myFish) // ["angel", "clown", "sturgeon"]
  35. console.log(removed) // ["mandarin"]
  36. // 从索引 2 的位置开始删除所有元素
  37. var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
  38. var removed = myFish.splice(2)
  39. console.log(myFish) // ["angel", "clown"]
  40. console.log(removed) // ["mandarin", "sturgeon"]

unshift

unshift 方法将一个或多个元素添加到数组的开头,修改原有数组,并返回该数组的新长度。

参数说明

  1. arr.unshift (
  2. ...args
  3. ) return number // 修改后数组的长度
参数名 是否必填 类型 说明
…args any …args添加到数组的末尾,如果不传则执行无效果

示例

  1. var arr = [4, 5, 6]
  2. arr.unshift(1, 2, 3)
  3. console.log(arr) // [1, 2, 3, 4, 5, 6]
  4. var arr = [4, 5, 6]
  5. arr.unshift(1)
  6. arr.unshift(2)
  7. arr.unshift(3)
  8. console.log(arr) // [3, 2, 1, 4, 5, 6]
  9. var arr = [1, 2]
  10. arr.unshift(0) // [0, 1, 2]
  11. arr.unshift(-2, -1) // [-2, -1, 0, 1, 2]
  12. arr.unshift([-4, -3]) // [[-4, -3], -2, -1, 0, 1, 2]
  13. arr.unshift([-7, -6], [-5]) // [ [-7, -6], [-5], [-4, -3], -2, -1, 0, 1, 2 ]