Js中去除陣列中重複元素的4種方法
今天工作遇到此問題,嘗試多個方法不盡人意,故此寫個部落格來總結一下如何在js中去除重複元素。
方法1:
Array.prototype.method1 = function(){ var arr[]; //定義一個臨時陣列 for(var i = 0; i < this.length; i++){ //迴圈遍歷當前陣列 //判斷當前陣列下標為i的元素是否已經儲存到臨時陣列 //如果已儲存,則跳過,否則將此元素儲存到臨時陣列中 if(arr1.indexOf(this[i]) == -1){ arr.push(this[i]); } } return arr; }
方法2:
Array.prototype.method2 = function(){ var h{}; //定義一個hash表 var arr[]; //定義一個臨時陣列 for(var i = 0; i < this.length; i++){ //迴圈遍歷當前陣列 //對元素進行判斷,看是否已經存在表中,如果存在則跳過,否則存入臨時陣列 if(!h[this[i]]){ //存入hash表 h[this[i]] = true; //把當前陣列元素存入到臨時陣列中 arr.push(this[i]); } } return arr; }
方法3:
Array.prototype.method3 = function(){ //直接定義結果陣列 var arr[this[0]]; for(var i = 1; i < this.length; i++){ //從陣列第二項開始迴圈遍歷此陣列 //對元素進行判斷: //如果陣列當前元素在此陣列中第一次出現的位置不是i //那麼我們可以判斷第i項元素是重複的,否則直接存入結果陣列 if(this.indexOf(this[i]) == i){ arr.push(this[i]); } } return arr; }
方法4:
Array.prototype.method4 = function(){ //將陣列進行排序 this.sort(); //定義結果陣列 var arr[this[0]]; for(var i = 1; i < this.length; i++){ //從陣列第二項開始迴圈遍歷陣列 //判斷相鄰兩個元素是否相等,如果相等說明資料重複,否則將元素寫入結果陣列 if(this[i] !== arr[arr.length - 1]){ arr.push(this[i]); } } return arr; }
例如:
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1']; alert(arr.method3());
方法1和方法3都用到了陣列的indexOf()方法,此方法主要用來查詢元素在陣列中第一次出現的位置。比較浪費資源和時間。
方法2使用的是hash表,把已經出現過的元素通過下標形式寫入到一個object內,下標的引用要比用陣列indexOf()方法搜尋節省時間。
方法4是先將陣列排序,然後一次比較相鄰的兩個元素的值,排序使用的是js原生的sort()方法。
讀者可以自行編寫程式測試四種方法的效率如何。例如:首先利用隨機函式生成一個50000長度的隨機數陣列,然後分別用四種方法進行執行,記錄程式執行時間進行比較四種方法的優劣。
相關推薦
Js中去除陣列中重複元素的4種方法
今天工作遇到此問題,嘗試多個方法不盡人意,故此寫個部落格來總結一下如何在js中去除重複元素。 方法1: Array.prototype.method1 = function(){ var arr[
js去除陣列的重複元素和去除陣列中相鄰的重複元素
//去除陣列的重複元素 Array.prototype.distinct = function(){ var $ = this; var o1 = {}; var o2 = {}; var o3 = []; var o; for(var i=0;o = $[i]
JS中去除陣列中的無效值(空,undefined, null, false)
1.Array.filter() arr.filter(item => item) 2.也可以通過遍歷判斷陣列, 空字元,undefined, null, false 轉化為布林型別都是 false; let arr=[1, , null, false, undefined,
Linux中執行shell腳本的4種方法
linux shell 這篇文章主要介紹了Linux中執行shell腳本的4種方法總結,即在Linux中運行shell腳本的4種方法,需要的朋友可以參考下。bash shell 腳本的方法有多種,現在作個小結。假設我們編寫好的shell腳本的文件名為hello.sh,文件位置在/root/bin目錄中
html5中讓頁面縮放的4種方法
1.viewport這種方法,不是所有的瀏覽器都相容<meta name="viewport" content="width=640,minimum-scale=0.5,maximum-scale=1.0,user-scalable=no, initial-scale
JS去除陣列中重複元素
var arr =["2017-12", "2017-12", "2017-12", "2018-02", "2018-02", "2018-02", "2018-02", "2018-02", "20
js怎麼刪除陣列中重複的元素?
刪除陣列中重複的元素 剛剛看到這篇文章,就立馬過來收藏,雖然還沒看懂,希望我再研究一下面是統計陣列中重複元素的個數 var arr = []; var result = [‘2017年6月’, ‘2017年6月’, ‘2017年6月’, ‘2017年5月’, ‘2017年5月’, ‘20
c++ 去除陣列中重複的元素
for(int i=0;i<len;i++) { for(int j=i+1;j<len;j++) { if(x[j]==x[i]) { for(int k=j+1;k
去除陣列中所有重複元素
//去除陣列中重複元素 var arr = [0,2,3,1,5,5,8,8,2,1,10,10,43,43]; var json = {}; for (var i = 0; i < arr.length; i++) { if (!json[arr[i]]) {
iOS去除陣列中重複元素的幾種方法
//第一種:利用NSDictionary的allKeys(allValues)方法。 NSArray *array = @[@"2016-10-1",@"2016-10-9",
去除陣列中的重複元素-JAVA
要求:去除二維陣列中的重複元素思路:試試不用集合的方式去重複元素,首先我想到的是需要一個去重後儲存元素的新陣列,然後在兩層巢狀迴圈,外層遍歷原陣列,內層逐一判斷是否和後面的元素重合,然後在存入新陣列。(這時候會出現一個問題,請往下看!)// 1、去除陣列中重複的元素 pub
JS(ES6)去除陣列中的重複記錄
1.雙層迴圈,外層迴圈元素,內層迴圈時比較值;如果有相同的值則跳過,不相同則push進陣列 // formatConcatArr(array)==[ 1, 23, 2, 3 ] formatConcatArr(array)=={{formatConcatArr([1,
去除陣列中的重複元素
#include<vector> #include<algorithm> #include<iostream> using namespace std; int Unique(int array[],int arrayLength){ int length=1; //去除
js 去除陣列中的空值以及陣列判斷是否有重複資料
1、判斷是否有重複資料 function isRepeat(array){ var hash = {}; for(var i in array) { if(array[i]!=""){ if(hash[array[i]])
RF-去除陣列中重複元素
1、去除陣列中重複元素 ${Record1} create list 1 1 2 2 ${len} Get Length ${Record1} #len=4 log many ${Recor
去除陣列中重複資料
public class DeleteDuplicate { public static void main(String[] args) { int[] array = new int
bootstrap 多選按鈕實現方式,js,jQuery刪除陣列中指定元素
bootstrap有許多,非常漂亮的設計,不用自己苦惱於css 的使用。 bootstrap使用,實現多選方法: 1、使用bootstrap的表格標籤,表格內容為PHP返回前端資料, <table class="table table-hover table-bordered"
JS-從排序陣列中刪除重複項
給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 示例1 給定陣列 nums = [1,1,2], 函式應該返回新的長度 2, 並
iOS 去除陣列中重複資料的幾種方法
第一種:利用NSDictionary的AllKeys(AllValues)方法 程式碼: NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03", @"2014-04-01",
【刷題】去除陣列中唯一重複的數
題意:一個數組,裡面只有一個重複的數,找出這個重複的數,並考慮時間複雜度。 分析: 1,如果去過該陣列是存在某個範圍之內,且佔滿了該範圍,只多了一個數,如陣列有101個數,數的範圍是[1, 100]。就是說該陣列中的數包含了1到100所有的數,且第101個數也是在[1, 100]範圍內的