Rxjs过滤器拆分字符串可通过分隔符观察

问题描述

我必须使用逗号分隔符将字符串拆分为可观察到的自动完成服务。

字符串是这样的:

nom_commune = Ambarès,ambares,Ambares,ambarès

我想获取字符串的第一个值:Ambarès

我试图拆分为可观察到的,但出现此错误

类型'boolean'上不存在属性'split'。

    return this.http.get<IUserResponse>('https://tu.com/agriobs-codeigniter/index.PHP/structure/get_area/17').pipe(
      map((response: IUserResponse) => {
        response.results = response.results
          .map(user => new User(user.id_commune,user.nom_commune))
          .filter(user => user.nom_commune.includes(filter.name).split(",")[0])
         // console.log(response.results[0].nom_commune.split(",")[0]);
        return response; 
      })  
    );

解决方法

由于操作顺序而出现该错误

user.nom_commune.includes(filter.name).split(",")[0])

这翻译成

  1. 如果user.nom_commune包含filter.name,则返回布尔值
  2. 然后,您尝试拆分此操作返回的值。
  3. 从上一个操作返回的值为布尔值,不支持split

这就是为什么您会收到错误消息。

如果我不得不猜测您可能想将操作顺序更改为

user.nom_commune.split(",").includes(filter.name)

但这只是基于您到目前为止共享的代码的猜测。

基于OP注释的更新

return response.results
  .map(user => new User(user.id_commune,user.nom_commune))
  .filter(user => user.nom_commune.includes(filter.name))
  .map( user => user.nom_commune.split(",")[0])