JavaScript检查数组中是否有唯一的东西

JavaScript checking if something is unique in an array

本文关键字:唯一 是否 检查 数组 JavaScript      更新时间:2023-09-26

我一直在SO和谷歌上搜索,但我不知道该怎么做。我正在创建我自己的小应用程序,它使用ajax和Yahoo API将RSS提要信息带回并显示在页面上,它会带回标题、描述、缩略图和GUID。目前的问题是,数组中返回的带有图像的数据是重复的,所以我的想法是"我会检查guid,如果它们不是唯一的,就删除一个",但我尝试的方法不起作用。欢迎提出任何建议!

这就是我获取数据的方式,将xml转换为JSON,JSON将包含属性"title,description,pubdate,thumbna&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]项目!

handlebars.registerHelper("rssFeed", function(results) {
    var a = results;        
    if(Array.isArray(a)) {
        return a[0];
    }
    else {
        return a;
    }       
});

你可以像下面这样过滤:

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,快速(草率)示例:

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