push() 入棧
push()方法可以向數組後添加一個新的元素,並返回新數組的長度。
末尾添加,返回長度,改變原數組var a = [1,2,3]
var b = a.push(4)
console.log(a) // [1,2,3,4]
console.log(b) // 4
pop() 出棧
pop() 用於刪除並返回最後一個元素。
尾部刪除,返回被刪除的元素,改變原數組
var a = [1,2,3]
var b = a.pop()
console.log(a) // [1,2]
console.log(b) // 3
shift() 刪除頭元素
shift() 用於刪除並返回首個元素
刪除首部元素,返回被刪元素,改變原數組
var a = [1,2,3]
var b = a.shift()
console.log(a) // [2,3]
console.log(b) // 1
unshift() 增加頭元素
unshift()可以向數組前添加一個或多個元素,並返回新的長度
首部添加,返回長度,改變原數組
var a = [2,3,4]
var b = a.unshift(0,1)
console.log(a) // [0,1,2,3,4]
console.log(b) // 5
splice() 修該刪除
splice(index,length,增加的元素1,增加的元素2....,增加的元素N) 表示從index開始刪除length個元素,並從index開始新增元素1~N,放回被刪除的元素組成的數組
對數組進行刪除修改,返回被刪除的元素組成的數組,改變原數組
var a = [1,2,3]
var b = a.splice(1,1,3,[2,3,4],5)
console.log(a) // [1,3,[2,3,4],5,3]
console.log(b) // [2]
concat() 拼接
concat() 方法用來合併兩個或多個數組
合併兩個或多個數組,返回新數組,不會改變原數組
var a = [1,2,3]
var b = [4,5]
var c = a.concat(b)
console.log(a) // [1,2,3]
console.log(b) // [4,5]
console.log(c) // [1,2,3,4,5]
slice() 剪切
slice(startIndex,endIndex) 返回從startIndex開始(包括),到endIndex(不包括)之間的原屬組成的數組
返回新數組,不改變原數組
var a = [1,2,3]
var b = a.slice(0,1)
// 不填參數則表示剪切整個數組
var c = a.slice()
console.log(a) // [1,2,3]
console.log(b) // [1]
console.log(c) // [1,2,3]
console.log(a===c) // false // 注意 a !== c
// 負數表示從後往前數
var d = a.slice(-1,-2)
console.log(d) // [] 從左向右截取,所以說爲[]
var e = a.slice(-1)
console.log(e) // [3]
join() / toString() 轉成字符串
join() 方法用來將數組轉換爲字符串,與它相反的一個方法spilt('') 是將字符串拆分成數組
不改變原數組,返回轉換後的字符串
var a = [1,2,3,4,5]
console.log(a.join(',')) // 1,2,3,4,5
console.log(a) // [1,2,3,4,5]
sort() 排序
按ascii碼排序
改變原數組,返回排序後的數組
var a = ['a','b','d','c']
console.log(a.sort()) // ['a','b','c','d']
console.log(a) // ['a','b','c','d']
reverse() 顛倒順序
reverse() 方法用於顛倒數組中元素的順序。
返回的是顛倒後的數組,會改變原數組。
var a = [1,3,2,7,6]
console.log(a.reverse()) // [6,7,2,3,1]
console.log(a) // [6,7,2,3,1]
indexOf()和lastIndexOf()
indexOf(某元素,startIndex) 從startIndex開始,查找某元素在數組中的位置,若存在,則返回第一個位置的下標,否則返回-1
lastIndexOf(某元素,startIndex) 和indexOf()相同,區別在於從尾部向首部查詢
不會改變原數組,返回找到的index,否則返回-1
若不使用下標,則一般通過includes()方法代替indexOf()
var a = [1,2,4,3,4,5]
console.log(a.indexOf(4)) // 2
console.log(a.indexOf(4,3)) // 4
filter() 過濾
filter() 方法返回數組中滿足條件的元素組成的新數組,原數組不變
filter()的參數是一個方法
var a = [1,2,3,4,11]
// 第一個參數爲一個方法,有三個參數,current:當前值 index:當前值下標 array:這個數組對象
var b = a.filter(function(current,index,array){
return current < 10
})
console.log(b) // [1,2,3,4]
console.log(a) // [1,2,3,4,11]
map() 格式化數組
map() 方法來根據需求格式化原數組,返回格式化後的數組。原數組不變
var a = [1,2,3,4,5]
// 參數同filter方法
var b = a.map(function(current,index,array){
return current + 1
})
console.log(b) // [2,3,4,5,6]
console.log(a) // [1,2,3,4,5]
every()
對數組的每一項都運行給定的函數,若每一項都返回 ture,則返回 true
var a = [1,2,3,4,5]
var b = a.every(function(current,index,array){
return current < 6
})
var c = a.every(function(current,index,array){
return current < 3
})
console.log(b) // true
console.log(c) // false
some()
對數組的每一項都運行給定的函數,若存在一項或多項返回 ture,則返回 true
var a = [1,2,3,4,5]
var b = a.some(function(current,index,array){
return current > 4
})
var c = a.some(function(current,index,array){
return current > 5
})
console.log(b) // true
console.log(c) // false
Array.reduce()
此方法是所有元素調用返回函數,返回值爲最後結果,傳入的值必須是函數類型:
let
arr = [1, 2, 3, 4, 5]
const add = (a, b) => a + b
let
sum = arr.reduce(add)
//sum = 15 相當於累加的效果
與之相對應的還有一個 Array.reduceRight() 方法,區別是這個是從右向左操作的
forEach() 數組遍歷
遍歷整個數組,中途不能中斷
var arr = ['a','b','c']
var copy = []
arr.forEach(function(item){
copy.push(item)
})
console.log(copy)
ES6新增的方法
find()
找到數組中第一次滿足條件的元素,並返回,若找不到則返回undefined。不改變原數組。
和filter()方法的區別在於:filter返回值是所有滿足條件的元素組成的數組,
一般在需要使用找到的元素時,用find()方法
var a = [1,2,3,4]
// b在下面需要使用,則一般用find
var b = a.find(function(ele,index,array){
return ele == 1
})
var c = 3
var d = b + c
console.log(a) // [1,2,3,4]
console.log(b) // 1
console.log(d) // 4
// 若只需判斷元素是否存在
// 若果是簡單數組(非對象數組),則一般使用Array.includes(value)方法
// 如果爲對象數組,則可以使用Array.some()方法
var a = [1,2,3]
console.log(a.includes(1)) // true
var a = [{"name": "xiaoming" },{"name": "xiaohong"}]
console.log(a.some(function(ele){
return ele.name == 'xiaoming'
})) // true
findIndex()方法
findIndex()的作用同indexOf(),返回第一個滿足條件的下標,並停止尋找。
區別是findIndex() 的參數爲一個回調函數,且一般用於對象數組
var a = [1,2,3,4]
var b = a.findIndex(function(ele,index,array){
return ele === 2
})
var c = a.indexOf(2)
console.log(a) // [1,2,3,4]
console.log(b) // 1
console.log(c) // 1
includes()
includes()方法,返回一個布爾值。 參數是一個value,一般用於簡單數組。
對於複雜數組,則可以使用some()方法替代includes()方法
var a = [1,2,3]
console.log(a.includes(1)) // true
Array.isArray()方法
用來判斷一個元素是否爲數組
Array.isArray([]) // true
Array.isArray({}) // false