JSON物件陣列的重覆值過濾方法

遇到的問題是這樣,我們有一個陣列,元素都是JSON object,然後現在要過濾掉重覆值,而且過濾的條件是看單一屬性,例如條件是看value,則

array[0]與array[2]被識為相同,過濾後陣列剩下value:8跟value:9,至於value:9的兩個sid要留下哪一個,隨便。

過濾重覆值的方法很多,最簡單的方法就是一個O(n平方)的演算法:每次都回頭找有沒有一樣的,有就跳出,沒有就留下。

另一個想法是,我們先做一個索引,把相異值先抓出來做出一個陣列(newArray),然後要處理的陣列(array)一個一個跟這個索引陣列去比,如果有找到,就把索引拿掉,後面要比對的次數就越來越少了。

缺點就是依然不夠快。

經過劉朝中的提醒後,我們來看看用物件的方法:

因為其它的不重要,所以我們一邊讀陣列一邊製作物件newObject,利用 key 的特性,用 array[i][itemName] 來做為 key 值,每次去判斷newObject有沒有這個key,就知道要不要塞進去unique陣列。

實測的速度快很多,我懶得做時間測試,有興趣的人可以自己試試。

 

Leave a Reply

你的電子郵件位址並不會被公開。 必要欄位標記為 *