1. 程式人生 > >JavaScript中陣列的應用方式

JavaScript中陣列的應用方式

陣列的增加方法

1. push() 方法向陣列中末尾新增一個元素,原陣列改變

2. unshit() 方法向陣列中開始元素新增一個元素,原陣列改變

3.splice()方法

ary.splice(n,m,x) 從索引n開始刪除m個元素,把新增的元素X放在索引n的前面,把刪除的元素當成一個新陣列返回,原有陣列改變

4. concat:是將引數新增到原陣列中構成 新的陣列,原有陣列不改變  (多用於數組合並)

 

陣列的刪除方法

1.pop()方法刪除原陣列最後一項,並返回刪除元素的值;如果陣列為空則返回undefined, 原陣列改變

2.shit()方法刪除原陣列第一項,並返回刪除元素的值;如果陣列為空則返回undefined, 原陣列改變

3.splice()方法

ary.splice(n,m)從索引n開始刪除m個元素,把刪除的內容當做新陣列返回,原有陣列改變

查詢

1.slice(n,m)從索引n開始,找到索引m處,把找到的內容作為新的陣列返回,原有陣列不改變 

var arr=[1,2,3,4,5,6];
      var arr7=arr.slice(1,3);
      console.log(arr7); // [2, 3]

2.slice(n) 從索引n開始查詢到陣列末尾, 把找到的內容作為新的陣列返回,原有陣列不改變 

3. indexof():搜尋陣列中的元素,並返回它所在位置索引,否則返回 -1

陣列轉化為字串

1. toString()方法陣列轉換字串 

2. join(separator):將陣列的元素組起一個字串,以separator為分隔符,省略的話則用預設用逗號為分隔符

排序

1.sort 方法可以實現由大到小或者由小到大的排序 但是直接寫sort只能排序十以內的數字  

2.reverse()方法陣列逆序

 

 

在js中,陣列和物件的複製如果使用=號來進行復制,那只是淺拷貝

 

let arr1 = [1,2,3,4,5];
let arr2 
= arr1; arr1[1] = 6; console.log(arr1); // [1,6,3,4,5] console.log(arr2); // [1,6,3,4,5]

 

如上,arr的修改,會影響arr2的值,這顯然在絕大多數情況下,並不是我們所需要的結果。
因此,陣列以及物件的深拷貝就是javascript的一個基本功了

陣列的深拷貝

1.for 迴圈實現陣列的深拷貝

var arr = [1,2,3,4,5]
var arr2 = copyArr(arr)
function copyArr(arr) {
    let res = []
    for (let i = 0; i < arr.length; i++) {
     res.push(arr[i])
    }
    return res
}

2. slice 方法實現陣列的深拷貝

這個程式碼實現非常簡單。原理也比較好理解,他是將原陣列中抽離部分出來形成一個新陣列。我們只要設定為抽離全部,即可完成陣列的深拷貝。

var arr = [1,2,3,4,5]
var arr2 = arr.slice(0)
arr[2] = 5
console.log(arr)  // [1,2,5,4,5]
console.log(arr2)  //[1,2,3,4,5]

3.concat 方法實現陣列的深拷貝

這個程式碼也非常簡單,原理更加粗暴。它是用於連線多個數組組成一個新的陣列的方法。那麼,我們只要連線它自己,即可完成陣列的深拷貝。

var arr = [1,2,3,4,5]
var arr2 = arr.concat()
arr[2] = 5
console.log(arr)  // [1,2,5,4,5]
console.log(arr2)  // [1,2,3,4,5]

4.ES6擴充套件運算子實現陣列的深拷貝

var arr = [1,2,3,4,5]
var [ ...arr2 ] = arr
arr[2] = 5
console.log(arr)   // [1,2,5,4,5]
console.log(arr2)  //[1,2,3,4,5]

ES6 語法特性參考詳情

5.轉換成json再轉換成物件實現物件的深拷貝

var obj = {
  name: 'FungLeo',
  sex: 'man',
  old: '18'
}
var obj2 = JSON.parse(JSON.stringify(obj))

陣列和物件的深拷貝是js中最常見的應用。理解各種方法是必須的。希望對大家有所幫助。

 

時間是一個好東西,記錄的是愛你的證據