js 數組方法彙總

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章