可改變數組的方法

棧是一種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]
複製代碼
相關文章
相關標籤/搜索