使用Observable / subscribe中的值过滤数组?

时间:2017-11-20 13:20:42

标签: javascript typescript ionic-framework ngx-translate

我使用ngx-translate通过我的应用翻译关键字,包括标签列表。用户应该能够用任何语言搜索它们。

以前我在做

this.tag_array_filtered = this.tag_array.filter(tag => 
   tag.toUpperCase().includes(this.tag_searched.toUpperCase()));
)

但它只搜索关键字,而不是通过翻译。

这是我从密钥

获得翻译的方式
this.translate.get(tag).subscribe(value => {
   console.log(value);
})

变量tag_array是一个键数组,可以翻译。 tag_searched包含用户输入。 tag_array_filtered是要显示的键(未翻译)数组

我想做什么:(显然没有工作)

 this.tag_array_filtered = this.tag_array.filter(tag => 
    this.translate.get(tag.toUpperCase()).subscribe((value: string) => {
      value.includes(this.tag_searched.toUpperCase())
  })
 )

如何在使用订阅转换值时过滤我的数组?我想比较从数组转换的每个值到用户输入。

我可以用手工制作的循环来做到这一点,但是如果有一个已经存在的解决方案,它可能会更快。

1 个答案:

答案 0 :(得分:0)

translate.get()方法也接受一个字符串数组。 你可以这样试试。最终输出将是一个对象,如果需要,您可以将其转换为数组。



let tag_array_filtered = this.tag_array.filter(tag => 
 tag.toUpperCase()
    .includes(this.tag_searched.toUpperCase())
    .map(e => e.toUpperCase())
this.translate.get(matching_tags).subscribe((values: {}) => {
  this.tag_array_filtered_object =  values
})