国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

js實(shí)現(xiàn)數(shù)組去重方法及效率對(duì)比

2024-05-06 15:11:37
字體:
供稿:網(wǎng)友

其實(shí)網(wǎng)上搜索這些方法一堆堆的,之所以還來寫一遍主要是因爲(wèi)自己習(xí)慣一種之後就忘了其他方法怎麼實(shí)現(xiàn),就寫一寫總結(jié)一下,順便做個(gè)測(cè)試看看哪個(gè)效率最高,爲(wèi)了更好展示效果,我會(huì)先總結(jié)認(rèn)爲(wèi)比較好的方法,後面統(tǒng)一測(cè)試。(溫馨提示:下文衹是爲(wèi)了簡(jiǎn)便,一般情況下不建議寫在原型上,容易污染全局)

一,通過尋找對(duì)象屬性

var n = [14,12,2,2,2,5,32,2,59,5,6,33,12,32,6];Array.prototype.unique1 = function(){ var obj = {},  ary = [],  i= 0,  len = this.length; for(; i<len; i++){  if(!obj[this[i]]){   obj[this[i]] = 1;   ary.push(this[i]);  } } return ary.sort(function(a,b){return a - b});}console.log(n.unique1());

二,通過尋找數(shù)組位置

var n = [14,12,2,2,2,5,32,2,59,5,6,33,12,32,6];Array.prototype.unique2 = function(){ var ary = [],  i= 0,  len = this.length; for(; i<len; i++){  if(ary.indexOf(this[i]) == -1) ary.push(this[i]); } return ary.sort(function(a,b){return a - b});}console.log(n.unique2());

三,跟尋找數(shù)組位置類似,搜索數(shù)字第一次出現(xiàn)的位置是不是跟當(dāng)前位置一樣

var n = [14,12,2,2,2,5,32,2,59,5,6,33,12,32,6];Array.prototype.unique3 = function(){ var ary = [],  i= 0,  len = this.length; for(; i<len; i++){  if(this.indexOf(this[i]) == i) ary.push(this[i]); } return ary.sort(function(a,b){return a - b});}console.log(n.unique3());

四,比較常規(guī),先排序,再比較前後兩個(gè)數(shù)字是不是相等

var n = [14,12,2,2,2,5,32,2,59,5,6,33,12,32,6];Array.prototype.unique4 = function(){ this.sort(function(a,b){return a - b}); var ary = [],  i= 0,  len = this.length; for(; i<len; i++){  if(this[i] !== this[i-1]) ary.push(this[i]); } return ary;}console.log(n.unique4());

接下來是網(wǎng)上比較少的效率比較了,也是本文重點(diǎn),我們先生成一個(gè)計(jì)時(shí)函數(shù)統(tǒng)一比較

首先生成一個(gè)一百數(shù)字的數(shù)組

Array.prototype.unique1 = function(){ var obj = {},  ary = [],  i= 0,  len = this.length; for(; i<len; i++){  if(!obj[this[i]]){   obj[this[i]] = 1;   ary.push(this[i]);  } } return ary.sort(function(a,b){return a - b});}Array.prototype.unique2 = function(){ var ary = [],  i= 0,  len = this.length; for(; i<len; i++){  if(ary.indexOf(this[i]) == -1) ary.push(this[i]); } return ary.sort(function(a,b){return a - b});}Array.prototype.unique3 = function(){ var ary = [],  i= 0,  len = this.length; for(; i<len; i++){  if(this.indexOf(this[i]) == i) ary.push(this[i]); } return ary.sort(function(a,b){return a - b});}Array.prototype.unique4 = function(){ this.sort(function(a,b){return a - b}); var ary = [],  i= 0,  len = this.length; for(; i<len; i++){  if(this[i] !== this[i-1]) ary.push(this[i]); } return ary;}function randomAry (n) { var ary = [],i=0; for(; i<n; i++){  ary.push(Math.ceil(Math.random()*10000)); }  console.log(ary) return ary;}function useTime (fn) { var start = new Date(); fn(); var end = new Date(); console.log('本次函數(shù)運(yùn)行花了:' + (end - start) + '毫秒');}var ary = randomAry(100), fn1 = function(){ ary.unique1() }, fn2 = function(){ ary.unique2() }, fn3 = function(){ ary.unique3() }, fn4 = function(){ ary.unique4() };useTime(fn1);useTime(fn2);useTime(fn3);useTime(fn4);            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 黑山县| 铜梁县| 家居| 双鸭山市| 治多县| 漯河市| 年辖:市辖区| 织金县| 庄浪县| 宁化县| 新民市| 大邑县| 武山县| 大埔区| 高雄县| 青河县| 安岳县| 十堰市| 闽侯县| 乌兰察布市| 乌鲁木齐县| 乾安县| 绵阳市| 孝昌县| 金塔县| 定兴县| 沐川县| 襄城县| 铜陵市| 壤塘县| 云南省| 留坝县| 治多县| 柞水县| 灵川县| 通州市| 且末县| 和顺县| 文山县| 通道| 鸡泽县|