數(shù)組去重的方式有很多種,現(xiàn)總結(jié)一些備以后查漏補缺來用。
對基本數(shù)組類型去重:(1)set 和 array.from()實現(xiàn)
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:需要對數(shù)組排序去重
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:某一個元素只出現(xiàn)一次
(1)利用filter,indexof,lastIndexOf對基本類型數(shù)組去重復(fù)元素
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對基本類型數(shù)組去重復(fù)元素
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:對數(shù)組對象進行去重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)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/94851.html
摘要:數(shù)組去重,一般會在面試的時候才會碰到,要求手寫數(shù)組去重方法的代碼。在實際項目中碰到的數(shù)組去重,一般都是后臺去處理,很少讓前端處理數(shù)組去重。數(shù)組去重的方法一利用去重中最常用如果不考慮兼容性,這種去重的方法代碼最少。 數(shù)組去重,一般會在面試的時候才會碰到,要求手寫數(shù)組去重方法的代碼。如果是被提問到,數(shù)組去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看。 在實際項目中碰到的...
摘要:數(shù)組去重看了網(wǎng)上很多數(shù)組去重方法,用的比較常見的大概就幾種,今天想自己來做一個總結(jié)。還有就是方法返回的數(shù)組也是排序后的數(shù)組,某些情況下可能不符合要求。 JS數(shù)組去重 看了網(wǎng)上很多數(shù)組去重方法,用的比較常見的大概就幾種,今天想自己來做一個總結(jié)。部分內(nèi)容參考該博客 1 . 在原數(shù)組上操作(基本方法) 思路:利用循環(huán)嵌套,判斷數(shù)組中每個元素與其后面的元素是否相等,如果相等,就使用spli...
摘要:基本操作數(shù)組去重寫在前面數(shù)組去重經(jīng)常出現(xiàn)在前端招聘的筆試題里,比如有數(shù)組,請用實現(xiàn)去重函數(shù),使得返回作為筆試題,考點有二正確?;窘榻B文章主要是對數(shù)組去重的常用方法進行介紹。 js基本操作-數(shù)組去重 寫在前面 JavaScript 數(shù)組去重經(jīng)常出現(xiàn)在前端招聘的筆試題里,比如: 有數(shù)組 var arr = [a, b, c, 1, 0, c, 1, , 1, 0],請用 JavaScr...
摘要:基本操作數(shù)組去重數(shù)組去重的方法臨時數(shù)組保存其實這里面還沒考慮到數(shù)組里面嵌套數(shù)組對象的情況把去重后的結(jié)果放在一個臨時數(shù)組中對原來數(shù)組的元素與臨時數(shù)組元素比較臨時數(shù)組中不存在這個元素的放入臨時數(shù)組。 js基本操作-數(shù)組去重 數(shù)組去重的方法 1. 臨時數(shù)組保存(其實這里面還沒考慮到數(shù)組里面嵌套數(shù)組/對象的情況) 把去重后的結(jié)果放在一個臨時數(shù)組中, 對原來數(shù)組的元素與臨時數(shù)組元素比較, 臨時...
摘要:注方法可以返回某個指定字符串在字符串中首次出現(xiàn)的位置比如首次出現(xiàn)的位置是數(shù)組中的第一個,即下標為遍歷數(shù)組使用標識符去重聲明一個變量標識排序后遍歷過濾數(shù)組思路先給數(shù)組排序,這樣相同的項總是相鄰。 假設(shè)我們有數(shù)組arr,并且聲明新數(shù)組hash用來存放去重后的元素: var arr = [23,44,5,2,23,5,1,7,8,7]; //包含重復(fù)元素 var hash= [];...
閱讀 591·2021-11-22 14:45
閱讀 3083·2021-10-15 09:41
閱讀 1579·2021-10-11 10:58
閱讀 2806·2021-09-04 16:45
閱讀 2617·2021-09-03 10:45
閱讀 3247·2019-08-30 15:53
閱讀 1231·2019-08-29 12:28
閱讀 2143·2019-08-29 12:14