如何在打字稿中过滤对象数组

时间:2019-11-26 15:03:52

标签: angular filter autocomplete angular-material

我实现了具有自动完成功能的输入字段,该字段使用物料自动完成功能。 现在我有一个问题,如何在打字稿中过滤对象数组。

此对象数组包含键和值。

html看起来像这样:

<input matInput type="text" [formControl]="locationField" [(ngModel)]="node.field" [name]="node.id"
             [matAutocomplete]="auto" placeholder="Field"/>
<mat-autocomplete #auto="matAutocomplete">
    <mat-option *ngFor="let field of fields" [value]="field.key">
        {{field.value}}
    </mat-option>
</mat-autocomplete>

现在,如果我在输入字段中输入新值,则需要一个方法来创建新的mat-option。

过滤器功能如下:

private filterField(value: string): string[] {
    const allFields = this.locationFilterFields;
    if (value) {
        this.locationFieldResults = ArrayObject.filter((result) => {
            return searchFieldResult.indexOf(value) !== -1;
        });
    }
}

任何解决方案?

2 个答案:

答案 0 :(得分:1)

由于我不知道您拥有的的类型,但这是过滤对象数组的方法:-

var friends= [
   {name: "rachel", drink: "latte"},
   {name: "joey", drink: "latte"},
   {name: "phoebe", drink: "tea"},
   {name: "chandler", drink: "tea"}
];

   var newFriends=  heroes.filter(function(hero) {
   return friends.drink== "latte";
});

答案 1 :(得分:0)

    Object.keys(array_object).filter(key => typeof array_object[key as any] === "number").forEach((tempobjentry)=> {
//      inspect tempobjentry
    });

以上代码段过滤键类型为数字的array_object条目,并且forEach有助于枚举已过滤的条目。您可以替换条件以适合您的要求。希望这可以帮助。另请参阅How do I filter an array with TypeScript in Angular 2?以获得更详细的说明。