陣列是JavaScript的重要組成部分,不管是工作還是求職面試都會涉及數組,例如經典問題:怎麼給數組去重。今天就跟大家聊聊,陣列的常用方法有哪些,以及多種方式讓陣列去重。
一、陣列常用方法
slice() 用來擷取目標陣列的一部分,傳回一個新數組,原始數組不變。
concat() 用於多個陣列的合併。它將新數組的成員,加到原始數組成員的後部,然後傳回一個新數組,原始數組不變。
reverse() 用來顛倒排列陣列元素,傳回改變後的陣列。注意,該方法將改變原始數組。
sort() 將陣列成員排序,預設為依照字典順序排序。排序後,原始數組將會改變。
push() 用於在陣列的末端新增一個或多個元素,並傳回新增元素後的陣列長度。注意,該方法會改變原始數組。
pop() 用來刪除陣列的最後一個元素,並傳回該元素。注意,該方法會改變原始數組。
unshift() 用於在陣列的第一個位置新增元素,並傳回新增元素後的陣列長度。注意,該方法會改變原始數組。
shift() 用來刪除陣列的第一個元素,並傳回該元素。注意,該方法會改變原始數組。
splice() 用來刪除原始陣列的一部分成員,並且可以在刪除的位置新增新的陣列成員,傳回值是被刪除的元素。注意,該方法會改變原始數組。
map() 將陣列的所有成員依序傳入參數函數,然後把每一次的執行結果組成一個新陣列傳回。
forEach() 與map方法很相似,也是對陣列的所有成員依序執行參數函數。但是,forEach方法不傳回值,只用來操作資料。
filter() 用來過濾陣列成員,滿足條件的成員組成一個新陣列傳回。
join() 以指定參數為分隔符,將所有陣列成員連接為一個字串傳回。如果不提供參數,預設用逗號分隔。
indexOf() 傳回給定元素在陣列中第一次出現的位置,如果沒有出現則傳回-1。
lastIndexOf() 傳回給定元素在陣列中最後一次出現的位置,若沒有出現則傳回-1。
二、多種方式給陣列去重
1、利用物件
function unique(arr) { var uniqueArr = [], len = arr.length for (var i = 0; i < len; i++) { if (uniqueArr.indexOf(arr[i]) == -1) { uniqueArr.push(arr[i]) } } return uniqueArr } var arr = [1, 2, 3, 1, 5, "1"] var uniqueArr = unique(arr) console.log(arr) //[1, 2, 3, 1, 5, "1"] c onsole.log(uniqueArr) //[ 1, 2, 3, 5, '1' ]
2、排序後去重
function unique(arr) { var uniqueArr = [], sortArr = arr.concat().sort(), len = sortArr.length, prev for (var i = 0; i < len; i++) { if (!i || prev !== sortArr[i]) { uniqueArr.push(sortArr[i]) } prev = sortArr[i] } return uniqueArr } var arr = [1, 2, 3, 1, 5, "1"] var uniqueArr = unique(arr) console.log(arr) //[ 1, 2, 3, 1, 5, '1' ] console.log(uniqueArr) //[ 1, '1', 2, 3, 5 ]
3、for迴圈indexOf
function unique(arr) { var uniqueArr = [], obj = {}, len = arr.length for (var i = 0; i < len; i++) { obj[typeof arr[i] + arr[i]] = arr[i] } for (var i in obj) { uniqueArr.push(obj[i]) } console.log(obj) //{ number1: 1, number2: 2, number3: 3, number5: 5, string1: '1' } return uniqueArr } var arr = [1, 2, 3, 1, 5, "1"] var uniqueArr = unique(arr) console.log(arr) // [1, 2, 3, 1, 5, "1"] console.log(uniqueArr) //[ 1, 2, 3, 5, '1' ]
4、es6實作方法
function unique(arr) { return Array.from(new Set(arr)) } var arr = [1, 2, 3, 1, 5, "1"] var uniqueArr = unique(arr) console.log(arr) //[ 1, 2, 3, 1, 5, '1' ] console.log(uniqueArr) //[ 1, 2, 3, 5, '1' ]
以上是陣列的常用方法有哪些,如何給陣列去重(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!