摘要:源碼方案,舊方案方案,相比方案一,少了一層循環(huán),提高效率,邏輯更加清晰使用方法
源碼
//方案1,舊方案 Array.prototype.unique = function(key) { var arr = this; var n = [arr[0]]; for (var i = 1; i < arr.length; i++) { if (key === undefined) { if (n.indexOf(arr[i]) == -1) n.push(arr[i]); } else { inner: { var has = false; for (var j = 0; j < n.length; j++) { if (arr[i][key]!==undefined && arr[i][key] === n[j][key]) { has = true; break inner; } } } if (!has) { n.push(arr[i]); } } } return n; } //方案2,相比方案一,少了一層循環(huán),提高效率,邏輯更加清晰 Array.prototype.uniqueTree = function(key) { var res = []; var json = {}; var arr = this; for (var i = 0; i < arr.length; i++) { if (arr[i][key]===undefined||json[arr[i][key]]===undefined) { res.push(arr[i]); json[arr[i][key]] = 1; } } return res; };使用方法:
[1,2,3,4,3,2].unique() //[1,2,3,4]
[{a:1},{a:2},{a:1}].unique("a") //[{a:1},{a:2}]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80548.html
摘要:編寫雙重循環(huán)去重當(dāng)出現(xiàn)相同的元素時(shí),刪除重復(fù)的元素哈希表形式查詢對(duì)象是否存在當(dāng)前元素屬性借助方法查詢空數(shù)組里面是否已經(jīng)存在這個(gè)值,不存在則推入編寫單元測(cè)試輸出通過來實(shí)現(xiàn)是比較優(yōu)雅的姿勢(shì)。 編寫uniqueArray.js var Unique = { /** * 雙重循環(huán)去重 * @param arr * @returns {*} */ ...
摘要:數(shù)組元素甚至可以是對(duì)象或其它數(shù)組。它執(zhí)行的是淺拷貝,這意味著如果數(shù)組元素是對(duì)象,兩個(gè)數(shù)組都指向相同的對(duì)象,對(duì)新數(shù)組中的對(duì)象修改,會(huì)在舊的數(shù)組的相同對(duì)象中反應(yīng)出來。 JS中的數(shù)組是弱類型的,數(shù)組中可以含有不同類型的元素。數(shù)組元素甚至可以是對(duì)象或其它數(shù)組。JS引擎一般會(huì)優(yōu)化數(shù)組,按索引訪問數(shù)組常常比訪問一般對(duì)象屬性明顯迅速。數(shù)組長度范圍 from 0 to 4,294,967,295(2^...
摘要:的用法,申明構(gòu)造函數(shù),返回。構(gòu)造函數(shù)可以調(diào)用來獲取下一個(gè)值,可以構(gòu)造類似于隨機(jī)數(shù)生成器。在構(gòu)造器函數(shù)中,可以暫停然后返回當(dāng)前表達(dá)式的值??偨Y(jié)是為了更好的消滅這些不知道,希望對(duì)大家也有所幫助。 1、function*的用法; function*,申明構(gòu)造函數(shù),返回{value:v,done:true_or_false}。構(gòu)造函數(shù)可以調(diào)用next來獲取下一個(gè)值,可以構(gòu)造類似于隨機(jī)數(shù)生成器。...
摘要:的用法,申明構(gòu)造函數(shù),返回。構(gòu)造函數(shù)可以調(diào)用來獲取下一個(gè)值,可以構(gòu)造類似于隨機(jī)數(shù)生成器。在構(gòu)造器函數(shù)中,可以暫停然后返回當(dāng)前表達(dá)式的值??偨Y(jié)是為了更好的消滅這些不知道,希望對(duì)大家也有所幫助。 1、function*的用法; function*,申明構(gòu)造函數(shù),返回{value:v,done:true_or_false}。構(gòu)造函數(shù)可以調(diào)用next來獲取下一個(gè)值,可以構(gòu)造類似于隨機(jī)數(shù)生成器。...
摘要:的用法,申明構(gòu)造函數(shù),返回。構(gòu)造函數(shù)可以調(diào)用來獲取下一個(gè)值,可以構(gòu)造類似于隨機(jī)數(shù)生成器。在構(gòu)造器函數(shù)中,可以暫停然后返回當(dāng)前表達(dá)式的值??偨Y(jié)是為了更好的消滅這些不知道,希望對(duì)大家也有所幫助。 1、function*的用法; function*,申明構(gòu)造函數(shù),返回{value:v,done:true_or_false}。構(gòu)造函數(shù)可以調(diào)用next來獲取下一個(gè)值,可以構(gòu)造類似于隨機(jī)數(shù)生成器。...
閱讀 1747·2023-04-25 23:43
閱讀 926·2021-11-24 09:39
閱讀 725·2021-11-22 15:25
閱讀 1725·2021-11-22 12:08
閱讀 1092·2021-11-18 10:07
閱讀 2080·2021-09-23 11:22
閱讀 3350·2021-09-22 15:23
閱讀 2503·2021-09-13 10:32