Re: [問題] 去除JSON中重複的值再新增到網頁上

作者: mrbigmouth (大嘴先生)   2015-11-23 10:15:20
※ 引述《flirmnave (焰離雨星)》之銘言:
: 大家好
: 利用PHP由來源取得資料後 以JSON回傳
: JSON大致長這樣
: http://www.jsoneditoronline.org/?id=7d7865f63885c57fc18765b0c0bfa7ef
: 然後要利用那些資料append到網頁上
: 而問題就在 取回來的資料是有重複的
: 例如上面的網址所呈現的JSON有三筆資料
: 但有兩筆是一樣的
: 想要讓他變成不重複的資料該怎麼做呢??
: 我有找到 unique() 這個方法
: 目前的作法是 大致是以下
: success: function(jsonData) {
: var jsonList = jsonData.CourseList; //傳入的JSON
: var jsonLength = jsonData.CourseList.length; //取JSON的長度
: var jsonInput = new Array(jsonLength); //新增空陣列
: for (var i = 0; i < jsonLength; i++) { //將JSON中的id複製到新陣列
: jsonInput[j] = jsonList[i]["id"];
: }
: jsonInput = $.unique(jsonInput); //利用 unique() 去除重複值
: //最後用沒有重複值的 jsonInput 進行 append
: 但是用這個方法 JSON 裡的 credit 就不見了
: 只剩下 id
: 想請大家指點一下方向
: 該怎麼做才有辦法達成想要的效果呢?
: 感謝大家
有用underscore會方便很多
不過既然你看起來只用jQuery....
最簡單的方法大概是先用object hash儲存再轉陣列....
success: function(jsonData) {
var hashObj = {};
$.each(jsonList, function(index, data) {
hashObj[ data.id ] = data; //如果出現重複的id, 後面的資料會蓋掉前面的
});
//之後可以直接拿hashObj裡的資料來用,或者向下面這樣轉陣列
var uniquedDataList = [];
$.each(hashObj, function(id, data) {
uniquedDataList.push(data);
});
}
作者: flirmnave (焰離雨星)   2015-11-23 23:00:00
感謝回答 我會試試看的!!

Links booklink

Contact Us: admin [ a t ] ucptt.com