可改变数组的方法

栈是一种LIFO(Last-In-First-Out后进先出)的数据结构。栈中项的插入(叫作推入)和移除(叫作弹出),只发生在一个位置----栈的顶部前端

队列数据结构的访问规则是FIFO(First-In-First-Out先进先出),队列在列表的末端添加项,从列表的前端移除项数组

push/pop

push()方法能够接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度markdown

var colors = new Array()
var count = colors.push("red","green")
console.log(count) // 2
复制代码

pop()方法则从数组末尾移除最后一项,减小数组的length值,而后返回移除项数据结构

var item = colors.pop()
console.log(item) // green
复制代码

shift/unshift

shift()方法移除数组中第一项并返回该项,同时将数组长度减1函数

var colors = ["red", "green"]
var item = colors.shift()
console.log(item) // red
复制代码

unshift()方法在数组前端添加任意个项并返回新数组的长度spa

var colors = new Array()
var count = colors.unshift("red","green")
console.log(count) // 2
console.log(colors) // ["red","green"]
复制代码

reverse

reverse()反转数组的顺序code

var values = [1, 2, 3, 4, 5]
values.reverse()
console.log(values) // 5, 4, 3, 2, 1
复制代码

sort

sort()方法按升序排列数组--即最小的值位于最前面,最大的值排在最后面。sort方法实现排序时会调用每一个数组项的toString()转型方法,而后比较获得的字符串,以肯定如何排序orm

// 即便数组中的每一项都是数值,sort()方法比较的也是字符串
var values = [1, 10, 3, 14, 5]
values.sort()
console.log(values) // 1, 10, 14, 3, 5
复制代码

sort()接收一个比较函数做为参数,肯定排序顺序对象

var values = [1, 10, 3, 14, 5]
function compare (value1, value2) {
    if (value1 > value2) {
        return -1
    } else if (value1 < value2) {
        return 1
    } else {
        return 0
    }
}
values.sort(compare)
console.log(values) // 14, 10, 5, 3, 1
复制代码

对于数值类型或者valueOf()方法会返回数值类型的对象类型,可使用一个简单的比较函数排序

var values = [1, 10, 3, 14, 5]
function compares (value1, value2) {
    return value1 - value2
}
values.sort(compares)
console.log(values) // 1, 3, 5, 10, 14
复制代码

reverse()和sort()方法的返回值是通过排序以后的数组

splice

splice()方法主要用途是向数组中部插入项。使用这个方法的三种方式

  • 删除:能够删除任意数量的项;传入两个参数:要删除的第一项的位置和要删除的项数

    var colors = ["red", "blue", "green"]
    var removeItem = colors.splice(0, 2)
    console.log(colors) // ["green"]
    console.log(removeItem) // ["red", "blue"]
    复制代码
  • 插入:能够向指定位置插入任意数量的项;传入3个参数:起始位置、0(须要删除的项数)、要插入的项。若是要插入多项,能够传入第四个、第五个...以致任意多个项

    var colors = ["red", "blue", "green"]
    var removeArr = colors.splice(1, 0, "gray", "yellow")
    console.log(colors) // ["red", "gray", "yellow", "blue", "green"]
    console.log(removeArr) //[]
    复制代码
  • 替换:向指定位置插入任意数量的项,且同时删除任意数量的项;传入3个参数:起始位置、要删除的项数、要插入的任意数量的项。插入项数没必要与删除项数相等

    var colors = ["red", "blue", "green"]
    var removeArr = colors.splice(1, 1, "gray", "yellow")
    console.log(colors) // ["red", "gray", "yellow", "green"]
    console.log(removeArr) //["blue"]
    复制代码

splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(若是没有删除任何项,则返回一个空数组)

fill(ES6)

fill()方法能够用指定的值填充一至多个数组元素,当传入一个值时,fill()方法会用这个值重写数组中全部的值

let numbers = [1, 2, 3, 4]
numbers.fill(0)
console.log(numbers) // [0, 0, 0, 0]
复制代码

若是只想改变数组一部分的值,能够传入开始索引和不包含结束索引这两个可选参数

let numbers = [2, 3, 4, 5, 6]
numbers.fill(1,2)
console.log(numbers) // [2, 3, 1, 1, 1]
let numberss = [3, 3, 3, 3, 3]
numberss.fill(0, 1, 2)
console.log(numberss) // [3, 0, 3, 3, 3]
复制代码

copyWithin(ES6)

copyWithin()从数组中复制元素的值。此方法须要传入两个参数:一个是该方法开始填充值的索引位置,另外一个是开始复制值的索引位置

let numbers = [2, 3, 4, 5, 6]
numbers.copyWithin(1,2)
console.log(numbers) // [2, 4, 5, 6, 6]
复制代码

也能够传入第三个参数:不包含结束索引,用于指定中止复制值的位置

let numberss = [2, 3, 4, 5, 6]
numberss.copyWithin(1,0, 2)
console.log(numberss) // [2, 2, 3, 5, 6]
复制代码
相关文章
相关标签/搜索