JavaScript检查数组中的某些内容是否唯一
我一直在搜索SO和google,但我不知道该怎么做。我正在创建我自己的小应用程序,它使用ajax和YahooAPI带回RSS提要信息并显示到页面上,它带回标题、描述、缩略图和GUID。 目前的问题是,在带有图像的数组中返回的数据是重复的,因此我的想法是“检查guid,如果它们不是唯一的,则删除一个”,但我尝试的方法不起作用。任何建议都将不胜感激 这就是我获取数据的方式,将xml转换为JSON,JSON将包含属性“title、description、pubdate、thumbnail和guid” 重复处理JavaScript检查数组中的某些内容是否唯一,javascript,Javascript,我一直在搜索SO和google,但我不知道该怎么做。我正在创建我自己的小应用程序,它使用ajax和YahooAPI带回RSS提要信息并显示到页面上,它带回标题、描述、缩略图和GUID。 目前的问题是,在带有图像的数组中返回的数据是重复的,因此我的想法是“检查guid,如果它们不是唯一的,则删除一个”,但我尝试的方法不起作用。任何建议都将不胜感激 这就是我获取数据的方式,将xml转换为JSON,JSON将包含属性“title、description、pubdate、thumbnail和guid”
handlebars.registerHelper("removeDuplicate", function(results) {
var a = results;
var b = results.guid;
var i = 2;
foreach(b in a) {
if( b.count != 1) {
b--;
}
}
});
您可以按如下方式进行筛选:
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);
})
}
您可以使用
Array.prototype.reduce
,快速(草率)示例:
为了解决重复的问题,我已经像以前一样编写了一个Handlebar助手,但是经过一些调整,现在它可以按预期工作,如果项目在数组中,则只返回[0]项目
handlebars.registerHelper("rssFeed", function(results) {
var a = results;
if(Array.isArray(a)) {
return a[0];
}
else {
return a;
}
});
请添加一些示例数据。我已经添加了获取数据的方式,因为数组中每个对象的数据都不同,我希望这足够好吗?因为我没有写出数组,所以我只能说,在chrome开发工具中,它们都是字符串数据。在这种情况下,push做了什么?当结果数组当前对象不等于uniques中的任何记录时,push从结果数组推到uniques数组。我没有对它进行否决,所以我不确定。我有点担心尝试这一点,因为我不确定“push”关键字在空数组中减少传递的是什么。如果不是重复项,则将该项推送到缩减数组,然后返回它,否则只返回缩减数组而不返回重复值。好吧,我会玩一玩,看看能不能让这样的东西发挥作用:)
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;
}, []);
});
handlebars.registerHelper("rssFeed", function(results) {
var a = results;
if(Array.isArray(a)) {
return a[0];
}
else {
return a;
}
});