Array ES6及之前支持的方法總結

僅學習、強化記憶使用

原生支持

轉換方法:toLocaleString()、toString()、valueof()、join()
棧方法:push()、pop()
隊列方法:shift()、unshift()
重排序方法:sort()、reverse()
操作方法:concat()、slice()、splice()
其他:toSource()


一、轉換方法:toLocaleString()、toString()、valueof()、join()

1. toLocaleString():把數組轉換為本地數組,并返回結果。(首先調用每個數組元素的toLocaleString()方法,然后使用地區(qū)特定的分隔符把生成的字符串連接起來,形成一個字符串。)
var arr = [1, 2, 3]

console.log(arr.toLocaleString())

> 輸出:
> 1,2,3
2. toString():把數組轉換為字符串,并返回結果。
var arr = [1, 2, 3]

console.log(arr.toString())

> 輸出:
> 1,2,3
3. valueOf():返回數組對象的原始值(valueOf()方法返回Array對象的原始值。該原始值由Array對象派生的所有對象繼承。valueOf()方法通常由JavaScript在后臺自動調用,并不顯式地出現在代碼中。)
var arr = [1, 2, 3]

console.log(arr.valueOf())

> 輸出:
> [1, 2, 3]
4. Array.join():把數組的所有元素放入一個字符串,元素通過指定的分隔符進行分隔。
//([s]):分隔符
var arr = [1, 2, 3];

console.log(arr.join("."))

> 輸出:
> 1.2.3


二、棧方法:push()、pop()

5. push():向數組的末尾添加一個或更多元素,返回新數組的長度。
//(...ele):添加的元素
var arr = [1, 2, 3];

console.log(arr.push(4, 5, 6))
console.log(arr)

> 輸出:
> 6
> [1, 2, 3, 4, 5, 6]
6. pop():刪除并返回數組的最后一個元素
var arr = [1, 2, 3];

console.log(arr.pop())
console.log(arr)

> 輸出:
> 3
> [1, 2]


三、隊列方法:shift()、unshift()

7. shift():刪除并返回數組的第一個元素
var arr = [1, 2, 3];

console.log(arr.shift())
console.log(arr)

> 輸出:
> 1
> [2, 3]
8. unshift():向數組的開頭添加一個或更多元素,并返回新的長度。
//(...ele):添加的元素
var arr = [1, 2, 3];

console.log(arr.unshift(0, -1, -2))
console.log(arr)

> 輸出:
> 6
> [0, -1, -2, 1, 2, 3]


四、重排序方法:sort()、reverse()

9. sort():對數組的元素進行排序,返回結果數組
var arr = [4, 2, 3];

console.log(arr.sort())

> 輸出:
> [2, 3, 4]
10. reverse():顛倒數組中元素的順序,返回結果數組。(該方法會改變原來的數組,而不會創(chuàng)建新的數組。)
var arr = [1, 2, 3];

console.log(arr.reverse())

> 輸出:
> [3, 2, 1]


五、操作方法:concat()、slice()、splice()

11. Array.concat():連接兩個或更多的數組,返回一個數組。
//(arr):數組
var a = [1, 2, 3];
var b = [4, 5]

console.log(a.concat(b));

> 輸出:
> [1, 2, 3, 4, 5]
12. slice():從某個已有的數組返回選定的元素組成的數組。
//(start[, end]):起始位置,結束位置
var arr = [1, 2, 3];

console.log(arr.slice(1))
console.log(arr.slice(1, 2))
console.log(arr)

> 輸出:
> [2, 3]
> [2]
> [1, 2, 3]
13. splice():刪除元素,并向數組添加新元素(可選),返回被刪除的元素組成的數組。
//(start[, num, ...ele]):起始位置,刪除元素的個數, 要添加的元素(ps:第二個參數也有說是結束位置的,此處是本人chrome控制臺測試結果)
var arr = [1, 2, 3]

console.log(arr.splice(1, 1))
console.log(arr)
console.log(arr.splice(1, 1, 4, 5, 6))
console.log(arr)

> 輸出:
> [2]
> [1, 3]
> [3]
> [1, 4, 5, 6]


六、其他:toSource()

14. toSource():返回該對象的源代碼。(只有 Gecko 核心的瀏覽器(比如 Firefox)支持該方法,也就是說 IE、Safari、Chrome、Opera 等瀏覽器均不支持該方法)(來自w3school)
function employee(name, job, born) {
    this.name = name;
    this.job = job;
    this.born = born;
}

var bill = new employee("Bill Gates","Engineer",1985);
document.write(bill.toSource());

> 輸出:
> ({name:"Bill Gates", job:"Engineer", born:1985}) 


ES5新增

索引方法:indexOf() 和 lastIndexOf();
迭代方法:forEach()、map()、filter()、some()、every();
歸并方法:reduce()、reduceRight();


一、索引方法:indexOf()、lastIndexOf()

1. Array.indexOf():匹配數組中有無元素,不做類型轉換,返回下標,默認-1,該方法從數組的開頭開始向后查找
//(ele):要查找的元素
var arr = [1, 2, 3, 1]

console.log(arr.indexOf(1))

> 輸出:
> 0
2. Array.lastIndexOf(): 匹配數組中有無元素,不做類型轉換,返回下標,默認-1,該方法從數組的末尾開始向前查找
//(ele):要查找的元素
var arr = [1, 2, 3, 1]

console.log(arr.lastIndexOf(1))

> 輸出:
> 3


二、迭代方法:forEach()、map()、filter()、some()、every()

3. Array.forEach():對數組中的每一項運行給定函數,沒有返回值,和for循環(huán)沒有太大差別
//(item[, index, array]):每一項元素[, 索引, 數組]
var arr = [1, 2, 3]

arr.forEach(function(item, index, array) {
    console.log(item)
    console.log(index)
    console.log(array)
})

> 輸出:
> 1 0 [1, 2, 3]
> 2 1 [1, 2, 3]
> 3 2 [1, 2, 3]
4. Array.map():遍歷數組中每一個元素,執(zhí)行相應的操作,返回一個數組
//(item[, index, array]):每一項元素[, 索引, 數組]
var arr = [1, 2, 3]

console.log(arr.map(function(item, index, array) {
    return item*2
}))

> 輸出:
> [2, 4, 6]
5. Array.filter():對數組中的每一項運行給定函數,返回由true的項組成的數組。利用這個方法可對數組元素進行過濾篩選。
//(item[, index, array]):每一項元素[, 索引, 數組]
var arr = [1, 2, 3]

console.log(arr.filter(function(item, index, array) {
    return item > 2
}))

> 輸出:
> [3]
6. Array.some():對數組中的每一項運行給定函數,若任何一項返回true,則返回true
//(item[, index, array]):每一項元素[, 索引, 數組]
var arr = [1, 2, 3]

console.log(arr.some(function(item, index, array) {
    return item > 2
}))

> 輸出:
> true
7. Array.every():對數組中的每一項運行給定函數,若每一項都返回true,則返回true
//(item[, index, array]):每一項元素[, 索引, 數組]
var arr = [1, 2, 3]

console.log(arr.every(function(item, index, array) {
    return item > 2
}))

> 輸出:
> false


三、歸并方法:reduce()、reduceRight()

8. Array.reduce():從數組的第一項開始,逐個遍歷到最后一項
//(pre, cur, index, array]):上一次return的結果, 當前元素, 索引, 數組
var arr = [1, 2, 3, 4, 5]

console.log(arr.reduce(function(pre, cur, index, array) {
    console.log(pre);
    console.log(cur);
    console.log(index);
    console.log(array);
    return pre + cur
}))

> 輸出:
> 1  2 1  [1, 2, 3, 4, 5]
> 3  3 2  [1, 2, 3, 4, 5]
> 6  4 3  [1, 2, 3, 4, 5]
> 10 5 4 [1, 2, 3, 4, 5]
> 15
9. Array.reduceRight():從數組的最后一項開始,逐個遍歷到第一項
//(pre, cur, index, array]):上一次return的結果, 當前元素, 索引, 數組
var arr = [1, 2, 3, 4, 5]

console.log(arr.reduceRight(function(pre, cur, index, array) {
    console.log(pre);
    console.log(cur);
    console.log(index);
    console.log(array);
    return pre + cur
}))

> 輸出:
> 5  4 3 [1, 2, 3, 4, 5]
> 9  3 2 [1, 2, 3, 4, 5]
> 12 2 1 [1, 2, 3, 4, 5]
> 14 1 0 [1, 2, 3, 4, 5]
> 15


ES6新增

1. Array.find():查找目標元素,找到就返回該元素,找不到返回undefined
var arr = [1, 2, 3]
//(item[, index, array]):每一項元素[, 索引, 數組]
console.log(arr.find(function(item, index, arr) {
    return item > 0;
}))

> 輸出:
> 1
2. Array.findIndex():查找目標元素,找到就返回元素的位置,找不到就返回-1。
//(item[, index, array]):每一項元素[, 索引, 數組]
var arr = [1, 2, 3]

console.log(arr.findIndex(function(item, index, arr) {
    return item > 0;
}))

> 輸出:
> 0
3. Array.includes():查找目標元素,返回Boolean
//(ele[, start]):目標元素[, 起始位置]
var arr = [1, 2, 3]

console.log(arr.includes(2, 2))

> 輸出:
> false
4. Array.keys():對鍵名的遍歷,返回一個遍歷器對象
var arr = [1, 2, 3]

for(let index of arr.keys()){
    console.log(index)
}

> 輸出:
> 0
> 1
> 2
5. Array.values():對鍵值的遍歷,返回一個遍歷器對象
var arr = [1, 2, 3]

for(let value of arr.values()){
    console.log(value)
}

> 輸出:
> 1
> 2
> 3
6. Array.entries():對鍵值對的遍歷,返回一個遍歷器對象
var arr = [1, 2, 3]

for(let obj of arr.entries()){
    console.log(obj)
}

> 輸出:
> [0, 1]
> [1, 2]
> [2, 3]
7. Array.fill():使用指定元素填充數組,返回填充后的數組(起始位置到(結束位置-1))
//(ele[, start, end]):(填充的元素, 起始位置, 結束位置)
var arr = [1, 2, 3]

console.log(arr.fill(5, 1, 2))

> 輸出:
> [1, 5, 3]
8. Array.of():將一組值,轉換為數組,返回轉換后的數組
//(...ele):(元素)
console.log(Array.of(1, 2, 3))

> 輸出:
> [1, 2, 3]
9. Array.copyWithin():在當前數組內部,將指定位置的成員復制到其他位置(會覆蓋原有成員),然后返回當前數組
//(target, start, end):(開始替換數據位置, 開始讀取數據位置, 結束讀取數據位置)
var arr = [1, 2, 3]

console.log(arr.copyWithin(0, 2, 3))

> 輸出:
> [3, 2, 3]
10. Array.from():將一個類數組對象或者可遍歷對象轉換成一個真正的數組
//(ele, function):(類數組對象, 方法)
let arrayLike = {//必須是有l(wèi)ength屬性的對象,沒有則返回空數組
    0: 1, 
    1: 2,
    2: 3,
    3: [0, 1, 2],
    'length': 4
}

console.log(Array.from("arrayLike"))
console.log(Array.from(arrayLike))
console.log(Array.from(arrayLike, x => x*x)) //等價于Array.from(arrayLike).map(x => x*x)

> 輸出:
> ["a", "r", "r", "a", "y", "L", "i", "k", "e"]
> [1, 2, 3, [0, 1, 2]]
> [1, 4, 9, NaN]
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容