2017-08-05 35 views
0

我已经集成Bootstrap3-typeahed在我的项目中,一切工作正常。问题是我在MySQL数据库中有重复的条目,我需要阅读的属性,但不希望它们在自动完成/建议下拉列表中多次显示。

如何从Bootstrap-3-Typeahead返回的结果中删除重复项?

例如,用户在输入域结果 'BAB' 被示: BAB BLE BAB BLE BAB BLER。

结果是我想要实现的是:BAB BLE BAB BLER

这里是响应用于显示结果的代码:我试图清理结果在这个

   $.ajax({ 
        url:"engine/searchhandler.php", 
        method:"POST", 
        data: {query:query, lang:$('#lang-pseudo').val()}, 
        dataType:"json", 
        async: false, 
        success:function(data){ 
         result($.map(data, function(item) { 
          return item; 
         })) 
        } 
       }) 

但它似乎没有工作(日志显示空元素):

    success:function(data){ 
         result($.map(data, function(item) { 
          var list = new Array();          
          var unique = list.filter(function(elem, index, self) { 
           return index == self.indexOf(elem); 
          }) 
          console.log(unique); 
          //return item; 
         })) 
        } 

Can有人帮助我从结果中删除重复项?

回答

1

使用Set

如果data包含您的数组:

const withoutDupes = [...new Set(data)]; 

Set s只能包含唯一的值。 [...]Set转换回数组。

没有Set

// 'data', not 'list' 
const withoutDupes = data.filter(function(elem, index, self) { 
    return index === self.indexOf(elem); 
}); 
+0

类型withoutDupes的将是一个数组? – iColdBeZero

+0

是的。 '[... new Set(data)]'和'Array.prototype.filter'都返回一个数组。 – PeterMader

+0

这是一个很好的答案,谢谢,但是在我没有使用Dupes之后,我不知道如何返回它的每个元素 – iColdBeZero