JavaScript检查数组中的某些内容是否唯一

时间:2015-11-18 10:07:37

标签: javascript

我一直在搜索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--;
        }
    }
});

3 个答案:

答案 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;
  }, []);
});