1. 程式人生 > 實用技巧 >JS中陣列的常用方法的總結

JS中陣列的常用方法的總結

JS中陣列常用方法總結

1、把陣列轉化為字串

toString() 把陣列一逗號分開,轉為陣列值的字串
join() 將所有陣列值合併生成一個字串,也可以指定分隔符

2、push()和pop()

  • 在末尾增加元素
    push()

但是返回值是返回新的組成陣列的長度

  • 直接刪除末尾的值
    pop() 返回一個”最後的值“

  • push()和pop() 都是利用的棧的結構,後進先出 ,只是改變原來的陣列

3、shift()和unshift()

shift() 刪除首個數組值,返回第一個陣列值, 序號依次向前移動一位
unshift() 在一個增加陣列值,返回長度值, 序號依次向後移動

4、copyWithin()

語法: copyWithin(target,start, end)
target 必須,從該位置開始替換
start 可選,從位置開始讀取資料,預設為0
end 可選,到該位置之前停止讀取資料,預設是陣列的長度

let arr = [1,2,3,4,5,6]
let a = arr.copyWithin(1,4)   //表示從第下標為1的位置開始替換,從下標為4的陣列值開始替換,這裡省略了第三個引數(預設就是陣列末)
console.log(a)   //[1, 5, 6, 4, 5, 6]

5、delete()

let arr = [1,2,3]
elete(arr[0])   //這裡刪除第一個,但是位置還是保留著
console.log(arr[0])   //undefined

6、splice()

該方法向陣列新增或者刪除元素,返回被刪除的專案,並同時改變原素組
splice(index,howmany,item1,...itemX)
index引數:必須,整數,規定新增或者刪除的位置,使用負數,從陣列尾部規定位置
howmany引數:必須,要刪除的數量,如果為0,則不刪除專案。
tem1,...itemX引數:可選,向陣列新增的新專案。

返回值:一個新的陣列

//增加元素

let arr = ['a', 'b', 'c']
// 下標為1的位置開始替換,後面的一次向後移動
//第二個引數為0, 就不表示刪除元素,只是新增元素
let a = arr.splice(1, 0, 'james')
console.log(arr)    //["a", "james", "b", "c"]
console.log(a)   // []
//增加元素和刪除元素

let arr = ['a', 'b', 'c']
// 下標為1的位置開始替換,後面的一次向後移動
//第二個引數為0, 就不表示刪除元素,只是新增元素
let a = arr.splice(1, 1, 'james')
console.log(arr)    //["a", "james", "c"]
console.log(a)   // ['b']
//獨特的用法

let array = [1,2,3,4,5];
let array2 = array.splice(3);
// 從下標3的位置開始刪除
// array [1,2,3]  
// array2  [4,5]

7、concat()

concat() 方法通過合併(連線)現有陣列來建立一個新陣列
方法不會更改現有陣列。它總是返回一個新陣列。
方法可以使用任意數量的陣列引數

//傳遞一個引數
let a = [1,2,3]
let b = [4]
let c = a.concat(b)
console.log(c)  //[1,2,3,4]

//傳遞兩個引數
let a = [1,2,3]
let d = [5]
let b = [4]
let c = a.concat(b, d)
console.log(c)  //[1, 2, 3, 4, 5]

8、slice()

slice() 方法用陣列的某個片段切出新陣列。
特點:返回一個新的陣列,不會改變原來的陣列

let a = [1,2,3]
let b = a.slice(2)
console.log(a)  // [1,2,3]  原來的陣列
console.log(b)  //[3]   返回的新陣列

9、sort()

  • sort()不傳遞引數時,會以預設方式進行排序,就是以字母順序進行排序,準確的講就是按照字元編碼的順序進行排序。
let a = [1000,3,76,12,79]
let b = a.sort()
console.log(b)  //[1000, 12, 3, 76, 79]
  • 傳遞引數,使陣列中按照順序排列,就需要自己寫一個函數了
let a = [1000,3,76,12,79]
let b = a.sort(function (a, b) {
    return b - a;
})
console.log(b)  //[3, 12, 76, 79, 1000]
  • 陣列亂序
a.sort(function(a,b){
	return Math.random() - 0.5;
}

10、reverse()

反轉陣列

11、Math.max()和Math.min()

function myArrayMax(arr) {
    return Math.max.apply(null, arr);
}

//Math.max.apply([1,2,3]) 等價於 Math.max(1,2,3)

12 、map()

引數:專案值(item, 必須)、專案索引(index, 可選)、陣列本身(arr, 可選)

map() 方法通過對每個陣列元素執行函式來建立新陣列。

map() 方法不會對沒有值的陣列元素執行函式。

map() 方法不會更改原始陣列。

let a = [1,2,3,4,5]
let b = a.map( x => x * 2)
console.log(a)   //[1, 2, 3, 4, 5]   原陣列
console.log(b)   //[2, 4, 6, 8, 10]  新陣列

13、forEach()

引數:專案值(item, 必須)、專案索引(index, 可選)、陣列本身(arr, 可選)

forEach會遍歷陣列, 沒有返回值, 不允許在迴圈體內寫return, 不會改變原來陣列的內容

forEach()也可以迴圈物件。

let a = [1,2,3,4,5]
a.forEach( x => console.log(x) )

14、filter()

filter 會過濾掉陣列中不滿足條件的元素, 把滿足條件的元素放到一個新陣列中, 不改變原陣列

引數:專案值(item, 必須)、專案索引(index, 可選)、陣列本身(arr, 可選)

結果:返回一個新的陣列

let a = [1,2,3,4,5]
let b= a.filter(function (x) {
    return x > 3
})
console.log(b)  //[4,5]

15、reduce()

reduce() 方法在每個陣列元素上執行函式,以生成(減少它)單個值。

reduce() 方法在陣列中從左到右工作。

reduce() 方法不會改變原始陣列。

引數:總數(初始值/先前返回的值)、專案值(item, 必須)、專案索引(index, 可選)、陣列本 身(arr, 可選)

et array = [1, 2, 3, 4];
let temp = array.reduce((x, y) => {
	return x + y;
});
console.log(temp);  // 10
console.log(array);  // [1, 2, 3, 4]

//x 是上一次計算過的值, 第一次迴圈的時候是陣列中的第1個元素
//y 是陣列中的每個元素, 第一次迴圈的時候是陣列的第2個元素

16、every()

引數:專案值(item, 必須)、專案索引(index, 可選)、陣列本身(arr, 可選)

every遍歷陣列, 每一項都是true, 則返回true, 只要有一個是false, 就返回false

let array = [1, 2, 3, 4];
let res = array.every((item, index, array) => {
  return item > 2;
});
console.log(res);   //false

17、some()

引數:專案值(item, 必須)、專案索引(index, 可選)、陣列本身(arr, 可選)

some遍歷陣列, 只要有一個是true, 就返回true

let array = [1, 2, 3, 4];
let res = array.every((item, index, array) => {
  return item > 2;
});
console.log(res);   //true

以上6種方法注意

以上均不改變原陣列。
some、every返回true、false。
map、filter返回一個新陣列。
reduce讓陣列的前後兩項進行某種計算,返回最終操作的結果。
forEach 無返回值。

18、indexOf() 和 lastindexOf()

indexOf(n) 檢查n第一次出現的下標位置

lastIndexOf(n) 檢查最後一次出現的下標位置

 let a = [1,2,3,2,3]
 console.log(a.indexOf(1))   //0
console.log(a.lastIndexOf(3)) //2

19、includes()

用法:includes()方法用來判斷一個數組是否包含一個指定的值,如果是返回 true,否則false。 (ES6新增的)

20、find()

find()方法,用於找出第一個符合條件的陣列成員。它的引數是一個回撥函式,所有陣列成員依次執行該回調函式,直到找出第一個返回值為true的成員,然後返回該成員。如果沒有符合條件的成員,則返回undefined。

引數:專案值(item, 必須)、專案索引(index, 可選)、陣列本身(arr, 可選)

 let a = [1,2,3,4,5]
 let c = a.find(function (x) {
     return x > 2
 })
 console.log(c) //3

21、findIndex()

findIndex()方法的用法與find()方法非常類似,返回第一個符合條件的陣列成員的位置,如果所有成員都不符合條件,則返回-1。

let a = [1,2,3,4,5]
let c = a.findIndex(function (x) {
    return x > 6
})
console.log(c)

22、fill()

ES6為Array增加了fill()函式,使用制定的元素填充陣列,其實就是用預設內容初始化陣列。

引數:

​ arr.fill(value, start, end)

​ value:填充的值

​ start: 開始的下標值

​ end:結束的下標值

//傳遞三個引數

let a = [1,2,3,4,5]
let b = a.fill(6,1,4)
console.log(b)   //[1, 6, 6, 6, 5]
//傳遞兩個引數,那麼最後一個值就是到陣列的末尾

let a = [1,2,3,4,5]
let b = a.fill(6,1)
console.log(b)   //[1, 6, 6, 6, 6]
//傳遞一個引數

let a = [1,2,3,4,5]
let b = a.fill(6)
console.log(b)   //[6, 6, 6, 6, 6]