我一直在搜索SO和谷歌,但我不确定如何去做我正在做的事情。我正在创建自己的小应用程序,它使用ajax和Yahoo API来恢复RSS提要信息并将其显示到页面,它会带回标题,描述,缩略图和GUID。 手头的问题是阵列中返回的数据,图像是重复的,所以我的想法是#34;我会检查guids,如果它们不是唯一的,请删除一个"但我所尝试的并不起作用。任何建议表示赞赏!
这就是我获取数据的方式,将xml转换为JSON,其中包含属性" title,description,pubdate,thumbnail& GUID"
function getData() {
return $.getJSON("giant yahoo api url" + "%22&format=json&callback=?",
function(data) {
}
);
重复处理
handlebars.registerHelper("removeDuplicate", function(results) {
var a = results;
var b = results.guid;
var i = 2;
foreach(b in a) {
if( b.count != 1) {
b--;
}
}
});
答案 0 :(得分:0)
为了解决重复的问题,我正在尝试按照以前的方式编写一个把手帮助器,但经过一些调整后,它现在按预期工作,如果项目处于某个状态,则仅返回[0]项目阵!
handlebars.registerHelper("rssFeed", function(results) {
var a = results;
if(Array.isArray(a)) {
return a[0];
}
else {
return a;
}
});
答案 1 :(得分:-1)
您可以按以下方式进行过滤:
var uniques = [];
results.forEach(function(result)) {
var control = true;
uniques.forEach(function(single) {
if(single.guid == result.guid) control = false;
if(control) uniques.push(result);
})
}
答案 2 :(得分:-1)
您可以使用Array.prototype.reduce
,快速(草率)示例:
handlebars.registerHelper("removeDuplicate", function(results) {
return results.reduce(function(arr, item) {
var unique = true;
arr.forEach(function(i) {
if (i.guid === item.guid) unique = false;
});
if (!unique) return arr;
arr.push(item);
return arr;
}, []);
});