摘要:源碼方案,舊方案方案,相比方案一,少了一層循環,提高效率,邏輯更加清晰使用方法
源碼
//方案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,相比方案一,少了一層循環,提高效率,邏輯更加清晰 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}]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80548.html
摘要:編寫雙重循環去重當出現相同的元素時,刪除重復的元素哈希表形式查詢對象是否存在當前元素屬性借助方法查詢空數組里面是否已經存在這個值,不存在則推入編寫單元測試輸出通過來實現是比較優雅的姿勢。 編寫uniqueArray.js var Unique = { /** * 雙重循環去重 * @param arr * @returns {*} */ ...
摘要:數組元素甚至可以是對象或其它數組。它執行的是淺拷貝,這意味著如果數組元素是對象,兩個數組都指向相同的對象,對新數組中的對象修改,會在舊的數組的相同對象中反應出來。 JS中的數組是弱類型的,數組中可以含有不同類型的元素。數組元素甚至可以是對象或其它數組。JS引擎一般會優化數組,按索引訪問數組常常比訪問一般對象屬性明顯迅速。數組長度范圍 from 0 to 4,294,967,295(2^...
閱讀 1731·2023-04-25 23:43
閱讀 908·2021-11-24 09:39
閱讀 713·2021-11-22 15:25
閱讀 1711·2021-11-22 12:08
閱讀 1085·2021-11-18 10:07
閱讀 2067·2021-09-23 11:22
閱讀 3339·2021-09-22 15:23
閱讀 2470·2021-09-13 10:32