數組去重的方式有很多種,現總結一些備以后查漏補缺來用。
對基本數組類型去重:(1)set 和 array.from()實現
var str, strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat(arr) { return Array.from(new Set(arr)) } console.log(removeRepeat(strs)) //["a", "b", "c", "er", "d"]
(2) indexOf和forEach()
var str=[], strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat() { strs.forEach(v=>{ if(str.indexOf(v) < 0) str.push(v) }) console.log(str) //["a", "b", "c", "er", "d"] }
(3)map 和 filter
var str=[], strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat(arr) { const unique = new Map() return arr.filter(v=>{ return !unique.has(v) && unique.set(v,1) }) } console.log(removeRepeat(strs)) //["a", "b", "c", "er", "d"]延伸1:需要對數組排序去重
var str=[], strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat(arr) { let arry = arr.sort() return arr.sort().filter((v,index) => { return !index || v !== arry[index-1] }) } console.log(removeRepeat(strs))// ["a", "b", "c", "d", "er"]延伸2:某一個元素只出現一次
(1)利用filter,indexof,lastIndexOf對基本類型數組去重復元素
var str, strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat() { str = strs.filter(function (value, index, array) { return array.indexOf(value) === array.lastIndexOf(value); }) console.log(str) //["d"] }
(2)利用lastIndexOf,splice對基本類型數組去重復元素
var str, strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat() { for (var i = 0; i < strs.length; i++) { if (i !== strs.lastIndexOf(strs[i])) strs.splice(i, 1); } console.log(str) //["d"] }
(1)和(2)的方法大同小異,原理是一樣
延伸3:對數組對象進行去重var Messages = [ { "timestamp": 1474328370007, "message": "hello" }, { "timestamp": 1474328302520, "message": "how are you" }, { "timestamp": 1474328370007, "message": "hello" }, { "timestamp": 1474328370007, "message": "hello" } ] var NoRepeatMessages = []; function RemoveRepeat(arr) { var hashFlag = {} arr.forEach((v,index) => { if (!hashFlag[v.timestamp]) { hashFlag[v.timestamp] = true; NoRepeatMessages.push(v); } }); console.log(NoRepeatMessages) //[{"timestamp": 1474328370007,"message": "hello"},{ "timestamp": 1474328302520,"message": "how are you"}] } RemoveRepeat(Messages)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/94851.html
摘要:數組去重看了網上很多數組去重方法,用的比較常見的大概就幾種,今天想自己來做一個總結。還有就是方法返回的數組也是排序后的數組,某些情況下可能不符合要求。 JS數組去重 看了網上很多數組去重方法,用的比較常見的大概就幾種,今天想自己來做一個總結。部分內容參考該博客 1 . 在原數組上操作(基本方法) 思路:利用循環嵌套,判斷數組中每個元素與其后面的元素是否相等,如果相等,就使用spli...
摘要:基本操作數組去重寫在前面數組去重經常出現在前端招聘的筆試題里,比如有數組,請用實現去重函數,使得返回作為筆試題,考點有二正確。基本介紹文章主要是對數組去重的常用方法進行介紹。 js基本操作-數組去重 寫在前面 JavaScript 數組去重經常出現在前端招聘的筆試題里,比如: 有數組 var arr = [a, b, c, 1, 0, c, 1, , 1, 0],請用 JavaScr...
摘要:基本操作數組去重數組去重的方法臨時數組保存其實這里面還沒考慮到數組里面嵌套數組對象的情況把去重后的結果放在一個臨時數組中對原來數組的元素與臨時數組元素比較臨時數組中不存在這個元素的放入臨時數組。 js基本操作-數組去重 數組去重的方法 1. 臨時數組保存(其實這里面還沒考慮到數組里面嵌套數組/對象的情況) 把去重后的結果放在一個臨時數組中, 對原來數組的元素與臨時數組元素比較, 臨時...
摘要:注方法可以返回某個指定字符串在字符串中首次出現的位置比如首次出現的位置是數組中的第一個,即下標為遍歷數組使用標識符去重聲明一個變量標識排序后遍歷過濾數組思路先給數組排序,這樣相同的項總是相鄰。 假設我們有數組arr,并且聲明新數組hash用來存放去重后的元素: var arr = [23,44,5,2,23,5,1,7,8,7]; //包含重復元素 var hash= [];...
閱讀 582·2021-11-22 14:45
閱讀 3070·2021-10-15 09:41
閱讀 1555·2021-10-11 10:58
閱讀 2797·2021-09-04 16:45
閱讀 2606·2021-09-03 10:45
閱讀 3238·2019-08-30 15:53
閱讀 1221·2019-08-29 12:28
閱讀 2133·2019-08-29 12:14