※ 引述《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);
});
}