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

Javascript 如何从Bootstrap-3-Typeahead返回的结果中删除重复项?,javascript,jquery,arrays,autocomplete,Javascript,Jquery,Arrays,Autocomplete,我已经在我的项目中集成了Bootstrap3 typeahed,一切正常。问题是mysql数据库中有重复的条目,我需要读取这些属性,但不希望它们在“自动完成/建议”下拉列表中多次显示。 例如,用户在显示的输入字段结果中键入“bab”: babble babble babbler 我试图达到的结果是:babblebabbler 以下是响应显示结果的代码: $.ajax({ url:"engine/searchhandler.ph

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

例如,用户在显示的输入字段结果中键入“bab”: babble babble babbler

我试图达到的结果是:babblebabbler

以下是响应显示结果的代码:

               $.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;
                        }))
                    }
                }) 
我试图以这种方式清理结果,但它似乎不起作用(日志显示空元素):

有人能帮我删除结果中的重复项吗?

请使用

如果
数据
包含数组:

const without dupes=[…新集合(数据)];
Set
s只能包含唯一的值。
[…]
集合
转换回数组

设置

/“数据”,而不是“列表”
const without dupes=data.filter(函数(元素、索引、自){
返回索引===self.indexOf(elem);
});

WithoutDupe的类型将是一个数组?是。
[…新设置(数据)]
数组.原型.过滤器
都返回数组。这是一个很好的答案,谢谢,但是在我没有重复后,我不知道如何返回它的每个元素。你应该能够调用
结果
回调,使用
没有重复
结果(没有重复)
。是的,没关系,我弄明白了,在我自己的代码中被搞糊涂了,我想需要休息一下=),再次感谢你的回答
                    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;
                        }))
                    }