$.unique() 對象組成的數組去掉重複對象

發現一件事,一個徹底由對象組成的數組,用$.unique()方法去掉重複的時候無論用api

1 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纔看明白spa

原來, 此功能只適用於普通的JavaScript DOM元素的數組,主要是jQuery內部使用。code

說白了,只能遍歷基本的數據類型吧,識別object仍是有難度的。對象

那沒辦法咯,只能給他們每個對象變成字符串,而後去掉重複,而後再給每個字符串轉成對象啦,最後拼成對象。blog

具體的代碼以下:ip

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);//看一下組裝後的數組

 

最後的結果:字符串

 

成功啦,成功嘍!!!!string

相關文章
相關標籤/搜索