發現一件事,一個完全由對象組成的數組,用$.unique()方法去掉重復的時候不管用
```
var arr = [{text:'第一個',value:'1'},{text:'第二個',value:'2'},{text:'第三個',value:'3'},{text:'第一個',value:'1'},{text:'第二個',value:'2'},{text:'第三個',value:'3'}]
```
假設用 `arr = $.unique(arr)`,這種方法處理一下,去掉重復的對象,結果返回的還是`arr` 原來的模樣,長度位`6`,并沒有去掉重復啊。
百思不得其解,查好長時間 `api` 才看明白
原來, 此功能只適用于普通的 `JavaScript DOM` 元素的數組,主要是 `jQuery` 內部使用。
說白了,只能遍歷基本的數據類型吧,識別 `object` 還是有難度的。
那沒辦法咯,只能給他們每一個對象變成字符串,然后去掉重復,然后再給每一個字符串轉成對象啦,最后拼成對象。
具體的代碼如下:
```
var arr = [{text:'第一個',value:'1'},{text:'第二個',value:'2'},{text:'第三個',value:'3'},{text:'第一個',value:'1'},{text:'第二個',value:'2'},{text:'第三個',value:'3'}];
//arr = $.unique(arr);// 首先用 $.unique() 方法去掉重復一遍,然而并沒什么卵用
console.log(arr);//看一下原來的數組
var arrResult = [];
for(var i=0;i<arr.length;i++){
arr[i] = JSON.stringify(arr[i]);//對象轉成字符串的方法
arrResult.push(arr[i]);//重新填裝成一個《字符串》組成的數組
}
arr = [];//清空原來的數據
arrResult = $.unique(arrResult); // 去掉重復的字符串
for(var j=0;j<arrResult.length;j++){
arrResult[j] = JSON.parse(arrResult[j]);// 重新給字符串轉換成對象
arr.push(arrResult[j]);//重新填裝成一個《對象》組成的數組
}
console.log(arr);//看一下組裝后的數組
```
最后的結果:

成功啦,成功嘍!!!!