繁体   English   中英

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

[英]Filtering array with value from Observable/subscribe?

我使用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())
  })
 )

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

我猜我可以用手工制作的循环来做,但是如果已经有解决方案,那可能会更快。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM