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]
5.轉換成json再轉換成物件實現物件的深拷貝
var obj = { name: 'FungLeo', sex: 'man', old: '18' } var obj2 = JSON.parse(JSON.stringify(obj))
陣列和物件的深拷貝是js中最常見的應用。理解各種方法是必須的。希望對大家有所幫助。
時間是一個好東西,記錄的是愛你的證據