我的.ts文件中有这个:
search(event) {
this.autocompletedata.filter((entry) => {
console.log('entryyyy',entry);
if (this.showFilter == 1) {
this.results = entry['items'].filter( a => a['item'] ? a['item'].startsWith(event.query) : false);
}
else if (this.showFilter == 2) {
this.results = entry['items'].filter( a => a['service'] ? a['service'].startsWith(event.query) : false);
}
else if (this.showFilter == 3){
this.results = entry['items'].filter( a => a['phoneNum'] ? a['phoneNum'].startsWith(event.query) : false);
}
});
}
问题是我得到了数据,但我得到了重复的数据。任何建议如何从数组中删除重复数据?
这是我自动填充的完整代码。
这是我的项目结构:
现在在最后if语句我有结果他们是建议,并且因为在数组中我有多次相同的数字我得到建议那个数字,我不想要那个 - 我只想要显示一个。
答案 0 :(得分:0)
尝试使用下面的代码,在代码中使用过滤器作为内部项目,但不使用原始数组作为值;
this.result = this.autocompletedata.filter((entry) => {
if (this.showFilter == 1) {
entry['item'] = entry['items'].filter( a => a['item'] ? a['item'].startsWith(event.query) : false);
return true;
}
return false;
});
答案 1 :(得分:0)
使用array.filter函数过滤重复数组,如下所示:
// Array with duplicate names
autocompletedata: Array<string> = ['a','b','v','c','p','a','b']; // For ex
output: Array<string> = []; // this will hold array filtered with duplicate one
let names: string = '';
this.output = this.autocompletedata.filter((item, index) => {
var flag = names.indexOf(item)===-1; // check if item available or not
names = index === this.autocompletedata.length-1? '': `${names}${item}`; // creating string of items to compare duplicate names
return flag; // return true if item is not duplicate one
})