陣列去重演算法總結

2021-09-29 14:42:27 字數 2369 閱讀 6448

// 方法一:set()

// 對於陣列項是物件的陣列,不能直接去重,陣列項是字串或者數字的可以直接去重

// 時間複雜度是o(1)

let delrepeatfunc = function (arr)

// delrepeatfunc(testarray)

// delrepeatfunc(testarraystore)

// delrepeatfunc(testarr)

// 方法二:兩次遍歷挨個對比有沒有

// indexof 或者 includes實際上也是一次遍歷

// 判斷新陣列裡面有沒有當前遍歷的元素:includes()(返回布林值,區分大小寫);indexof()(返回數字,表示當前遍歷的元素在目標陣列中的位置,-1代表沒有)

// 判斷陣列項是物件還是普通的字元:item instanceof type(返回布林值,object是true); typeof(item) (返回資料型別名稱,返回的名稱是字串型別,object,string,number等)

// 時間複雜度是o(n^2)

let delrepeatarray = function (arr)

if(!json.stringify(storearr).includes(json.stringify(item)))

} else

if(!storearr.includes(item))

}// let type = typeof(item)

// if(type == 'object')

// } else

// }

})console.log('去重的結果')

console.log(storearr)

}// delrepeatarray(testarray)

// delrepeatarray(testarraystore)

// delrepeatarray(testarr)

// 方法三:filter結合indexof

// filter迴圈提供了篩選功能,可達到去重的作用,但是效率不是十分高哦

// 對於陣列項是物件的陣列,不能直接去重

let distinct = function (a, b) )

}// let result = distinct(testobjarray, testarray)

// console.log(result.length)

// 方法四:sort()先排序,再比較相鄰兩個元素相等不相等

// 陣列元素是物件的話,加大了排序的複雜度

// 效能比較高的一種演算法 沒有set效能高

let delrepeatbyresort = function (array) }})

console.log('去重結果')

console.log(resultarray)

}// delrepeatbyresort(testarraystore)

// 方法五:物件的屬性不會重複

// 效率最高哦

let distinctarray = function (arr)

for (let i of arr)

}console.log(result)

}// distinctarray(testarraystore)

// 方法六:物件的屬性不會重複 用hasownproperty判斷物件有沒有指定屬性

// for in:i是索引,arr[i]是陣列元素值;for of:i是陣列元素值,沒有索引

let filterrepeat = function (arr)

let resultgroup =

// for (let i of arr)

// }

for (let i in arr)

}console.log(resultgroup)

}// filterrepeat(testarraystore)

// 方法七:map,map的結構類似於物件的結構,判斷map中有沒有陣列中指定的鍵即可

let maprepeat = function (arr) else

}console.log('結果')

console.log(mapresult)

}maprepeat(testarraystore)

// 方法八:遞迴,用loop實現迴圈,能不用遞迴就別用,效能低啊

let looprepeat = function (array)

loop(index - 1)}}

loop(len - 1)

console.log('結果')

console.log(arr)

}looprepeat(testarraystore)

iOS陣列去重總結

一般情況下我們都要對陣列進行去重整理,我總結了以下幾種方法,廢話不多說,一一分析 一 利用字典 nsarray arr qq ww qq nsmutabledictionary dict nsmutabledictionary dictionary for nsstring str in arr n...

演算法 陣列去重

1 實現目標 陣列去重 2 實現思路 1 建立新陣列。2 遍歷原陣列,判斷當前被遍歷元素是否存在於新陣列,如果存在於新陣列,則判斷當前被遍歷元素是重複的 如果不存在於新陣列,則判斷當前被遍歷元素不是重複的,則將其壓入新陣列。3 遍歷完畢原陣列後,返回新陣列。3 具體實現 根據對當前元素是否重複的判斷...

js陣列去重方法總結

暴力去重,利用迴圈每次判斷當前元素是否在陣列中別的地方出現過,此處不展開介紹 利用 es6 的 set 是不重複集合的特性 function reducerepeatbyset arr 利用object的key不能重複的特性 function reducerepeatbyobject arr let...