如何从数组中删除重复的名称?

时间:2017-09-05 14:31:52

标签: angular typescript

我的.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);
        }

    });
}

问题是我得到了数据,但我得到了重复的数据。任何建议如何从数组中删除重复数据?

这是我自动填充的完整代码。

这是我的项目结构:

enter image description here

现在在最后if语句我有结果他们是建议,并且因为在数组中我有多次相同的数字我得到建议那个数字,我不想要那个 - 我只想要显示一个。

2 个答案:

答案 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
})