摘要:測試排序后相鄰去除法思路先將數組經過排序,這時候相同的元素處于相鄰的位置所以在便利數組的時候我們只將與前一值不重復的值注意這里測試中方式補充這種方式兼容性但是可以通過轉不太好,但是非常簡潔。
不管是面試還是平時寫程序的過程中我們經常會遇到要對數組進行去重的問題,該文總結了一些常見的數組去重的方法。
對象鍵值對法思路:新建一js對象json以及新數組reArr,遍歷數組元素是否為json的鍵,不是則創建,是則判斷元素的類型在鍵對應的值中是否存在。
function unique(array){ var json = {}, reArr = [], len = array.length, val, type; for (var i = 0; i < len ; i++) { val = array[i]; type = Object.prototype.toString.call(val); if (!json[val]) {//如果鍵對應的值不存在則是第一次存取 json[val] = [type];//設置該鍵為數組,并賦值元素類型 reArr.push(val);//往reArr中添加元素 } else if (json[val].indexOf(type) < 0) { json[val].push(type); reArr.push(val); } } return reArr; } //該方法有bug,當有多個{}時,只能保存一個{}
測試
思路:新建一新數組,遍歷傳入的數組,值不在新數組就加入該新數組中;該方法最主要的是要使用ES5中的indexOf方法。但是ie8一下不支持,所以需要做一些兼容
if (!Array.prototype.indexOf){ Array.prototype.indexOf = function(item){ if (this.length == 0){ return -1; } for(var i = 0, len = this.length; i < len; i++){ if (this[i] === item){//注意是三個等號 return i break; } } return -1; } }
去重代碼
function unique(array){ var reArr = []; for(var i = 0; i < array.length; i++){ if (reArr.indexOf(array[i]) == -1){//判斷元素是否在數組中已經存在 reArr.push(array[i]); } } return reArr; }
測試
思路:將傳入的數組的第一項目添加到一個新的數組,后遍歷傳入的數組中的元素利用indexOf方法,若返回值與循環中的索引不同則是重復的元素。
function unique(array){ var reArr=[]; reArr[0]=array[0]; for(var i=1;i測試
排序后相鄰去除法思路:先將數組經過sort排序,這時候相同的元素處于相鄰的位置,所以在便利數組的時候我們只將與前一值不重復的值
function unique(array){ var reArr=[array[0]]; var len=array.length; array.sort(); for(var i=1;i測試
es6中Set方式(2017-8-25補充)這種方式兼容性(但是可以通過babel轉)不太好,但是非常簡潔。
function uniq (array) { return [...new Set(array)] }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91551.html
摘要:實現數組更多的高階函數吾輩的博客原文場景雖說人人平等,但有些人更加平等。若是有一篇適合萌新閱讀的自己實現數組更多操作的文章,情況或許會發生一些變化。類似于的初始值,但它是一個函數,避免初始值在所有分組中進行累加。 JavaScript 實現數組更多的高階函數 吾輩的博客原文: https://blog.rxliuli.com/p/fc... 場景 雖說人人平等,但有些人更加平等。 為...
摘要:而數組元素去重是基于運算符的。而如果有迭代函數,則計算傳入迭代函數后的值,對值去重,調用方法,而該方法的核心就是調用方法,和我們上面說的方法一異曲同工。 Why underscore (覺得這部分眼熟的可以直接跳到下一段了...) 最近開始看 underscore.js 源碼,并將 underscore.js 源碼解讀 放在了我的 2016 計劃中。 閱讀一些著名框架類庫的源碼,就好像...
摘要:封裝手寫的方筆記使用檢測文件前端掘金副標題可以做什么以及使用中會遇到的坑。目的是幫助人們用純中文指南實現復選框中多選功能前端掘金作者緝熙簡介是推出的一個天挑戰。 深入理解 JavaScript Errors 和 Stack Traces - 前端 - 掘金譯者注:本文作者是著名 JavaScript BDD 測試框架 Chai.js 源碼貢獻者之一,Chai.js 中會遇到很多異常處理...
摘要:封裝手寫的方筆記使用檢測文件前端掘金副標題可以做什么以及使用中會遇到的坑。目的是幫助人們用純中文指南實現復選框中多選功能前端掘金作者緝熙簡介是推出的一個天挑戰。 深入理解 JavaScript Errors 和 Stack Traces - 前端 - 掘金譯者注:本文作者是著名 JavaScript BDD 測試框架 Chai.js 源碼貢獻者之一,Chai.js 中會遇到很多異常處理...
摘要:前言總結了一下有關于數組的差集交集并集的方法的方法實現去重簡單的數組去重請傳入數組類型并集簡單數組的并集交集簡單數組的交集差集簡單數組的差集的方法實現去重簡單的數組去重請傳入數組類型交集簡單數組的交集請都傳入數組類型并集簡單數組的并集請都傳 前言 總結了一下有關于數組的差集、交集、并集的方法; es6的方法實現 去重 /** * 簡單的數組去重 * @param {Array} a...
閱讀 2335·2021-11-15 11:38
閱讀 3544·2021-09-22 15:16
閱讀 1187·2021-09-10 11:11
閱讀 3156·2021-09-10 10:51
閱讀 2921·2019-08-30 15:56
閱讀 2774·2019-08-30 15:44
閱讀 3185·2019-08-28 18:28
閱讀 3525·2019-08-26 13:36