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


發現一件事,一個完全由對象組成的數組,用$.unique()方法去掉重復的時候不管用

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才看明白

原來, 此功能只適用於普通的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);//看一下組裝后的數組

 

最后的結果:

 

成功啦,成功嘍!!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM