這次帶給大家js做出陣列去重方法總結,js做出陣列去重的注意事項有哪些,下面就是實戰案例,一起來看一下。
對於陣列去重我們有n種方法可以實作。
es5實作方法
for循环+indexOf 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"] console.log(uniqueArr) //[ 1, 2, 3, 5, '1' ]
排序後重
#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 ] 利用对象 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' ]
es6實作方法
利用Set结构和Array.from 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' ] 利用Set结构和... function unique(arr) { return [...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' ]
#陣列常用方法
slice() 用來擷取目標陣列的一部分,傳回一個新數組,原始數組不變。
concat() 用於多個陣列的合併。它將新數組的成員,加到原始數組成員的後部,然後傳回一個新數組,原始數組不變。
reverse() 用來顛倒排列陣列元素,傳回改變後的陣列。注意,該方法將改變原始數組。
sort() 對陣列成員進行排序,預設是依照字典順序排序。排序後,原始數組將會改變。
push() 用於在陣列的末端新增一個或多個元素,並傳回新增元素後的陣列長度。注意,該方法會改變原始數組。
pop() 用於刪除陣列的最後一個元素,並傳回該元素。注意,該方法會改變原始數組。
unshift() 用於在陣列的第一個位置新增元素,並傳回新增元素後的陣列長度。注意,該方法會改變原始數組。
shift() 用於刪除陣列的第一個元素,並傳回該元素。注意,該方法會改變原始數組。
splice() 用來刪除原始陣列的一部分成員,並且可以在刪除的位置新增新的陣列成員,傳回值是被刪除的元素。注意,該方法會改變原始數組。
map() 將陣列的所有成員依序傳入參數函數,然後把每一次的執行結果組成一個新陣列傳回。
forEach() 與map方法很相似,也是對陣列的所有成員依序執行參數函數。但是,forEach方法不傳回值,只用來操作資料。
filter() 用來過濾陣列成員,滿足條件的成員會組成一個新陣列傳回。
join() 以指定參數為分隔符,將所有陣列成員連接為一個字串傳回。如果不提供參數,預設用逗號分隔。
indexOf() 傳回給定元素在陣列中第一次出現的位置,如果沒有出現則傳回-1。
lastIndexOf() 傳回給定元素在陣列中最後一次出現的位置,如果沒有出現則傳回-1。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是js做出數組去重方法匯總的詳細內容。更多資訊請關注PHP中文網其他相關文章!