js陣列去重

2021-07-25 02:25:32 字數 1501 閱讀 6604

//法1

/*思路:

1.構建乙個新的陣列存放結果

2.for

迴圈中每次從原陣列中取出乙個元素,用這個元素迴圈與結果陣列對比

3.若結果陣列中沒有該元素,則存到結果陣列中

*/array.prototype.unique1 = function()

}if(!repeat)

}return res;

}var arr = [1

, 'a'

, 'a'

, 'b'

, 'd'

, 'e'

, 'e', 1

, 0];

console.log(arr.unique1());//法

2/*思路:1.

先將原陣列進行排序

2.檢查原陣列中的第

i個元素 與 結果陣列中的最後乙個元素是否相同,因為已經排序,所以重複元素會在相鄰位置

3.如果不相同,則將該元素存入結果陣列中

【因為 去重前陣列是排序的,所以去重後的陣列也是排序了的】

*/array.prototype.unique2 = function()

}return res;

}var arr = [1

, 'a'

, 'a'

, 'b'

, 'd'

, 'e'

, 'e', 1

, 0]

console.log(arr.unique2());//法

3/*思路:1.

建立乙個新的陣列存放結果

2.建立乙個空物件

3.每次從原陣列中取出乙個元素,然後到物件中去訪問這個屬性,如果能訪問到值,則說明重複。

*/array.prototype.unique3 = function();

for(var i = 0

; i < this.length; i++)

}return res;

}var arr = [112

,112,34

,'你好'

,112

,112,34

,'你好'

,'str'

,'str1'];

console.log(arr.unique3());//法

4/*思路:利用

array.prototype.indexof

,但是不支援

ie-8

,所以需要對

indexof

處理一下

*//*

改造下indexof,

支援ie6-8*/

var indexof = .indexof ?

function(arr, item) :

function

indexof(arr, item)

}return -1;}

function

unique(arr)

}return ret;

}

JS陣列去重,物件去重

例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...

js 陣列去重

function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...

JS 陣列去重

我總共想出了三種演算法來實現這個目的 array.prototype.unique1 function return n array.prototype.unique2 function r n為hash表,r為臨時陣列 for var i 0 i this.length i 遍歷當前陣列 retu...