首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可观察到的另一个包含数组的数组-过滤器

可观察到的另一个包含数组的数组-过滤器
EN

Stack Overflow用户
提问于 2022-08-22 21:37:08
回答 2查看 28关注 0票数 0

我有一个可以观察到的笔记

代码语言:javascript
复制
this.notes$ = this.NoteService.notes$

notes$ = 

0: {id: 4, user_id: 1, body: null, reminder: null, created_at: '2022-08-22T17:44:37.000000Z', …}
1: {id: 3, user_id: 1, body: 'die neuere', reminder: null, created_at: '2022-05-22T10:04:26.000000Z', …}
2: {id: 2, user_id: 1, body: 'Klappt das mit den Notizen?\n\n\nAuch mit Absätzen?', reminder: '2022-05-22 00:00:00', created_at: '2022-05-15T19:34:36.000000Z', …}
3:
body: "Meine Lieblingsnotiz"
created_at: "2022-05-15T18:13:43.000000Z"
id: 1
reminder: null
tags: Array(2)
0: {id: 1, name: 'Arbeit', slug: 'arbeit', created_at: null, updated_at: null, …}
1: {id: 4, name: 'Backlog', slug: 'backlog', created_at: null, updated_at: null, …}
length: 2
[[Prototype]]: Array(0)
title: "Test Notiz"
updated_at: "2022-05-15T18:13:57.000000Z"
user_id: 1

现在,我在html页面中有了开关,在那里我喜欢为标记激活一个过滤器。我把过滤器推到一个额外的数组,

代码语言:javascript
复制
['backlog', 'arbeit', 'email']

但是我没有办法通过阵列滤波器进行可观察到的滤波。我在想一件事

代码语言:javascript
复制
this.notes$ = this.NoteService.notes$.pipe(
      map(notes=> notes
        //.filter(t=> (!t.tags || t.tags.some(ai => this.filterTag.includes(ai))))   
        //.filter(t=> t.tags?.length > 0 && t.tags?.includes(this.filterTag) 
        //.filter(t=> t.tags!=undefined && t.tags.includes(this.filterTag))
        ))

也许你有个主意给我?提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-23 08:26:44

我用另一种方式修复了它

代码语言:javascript
复制
this.notes$ = this.NoteService.notes$.pipe(
      map((notes => notes
        .filter(t=> this.filterTaginNote(t)
        
      ))))
  ;
代码语言:javascript
复制
filterTaginNote(note: Note){
    if (this.filterTag.length == 0){return true}
    if (note.tags){
      for(var i = 0; i < note.tags?.length; i++){
        if (this.filterTag.includes(note.tags[i].slug)){
          return true;
        }
      }
    }
    return false;

  }
票数 0
EN

Stack Overflow用户

发布于 2022-08-23 03:20:59

检查是否为一个数组,然后执行常规逻辑,否则只需使用数组的includes方法在数组中找到该字符串。如果不存在标记,则返回原始数组本身!

代码语言:javascript
复制
this.notes$ = this.NoteService.notes$.pipe(
  map(notes=> notes.filter(t=> 
               t.tags && t.tags.length ? 
                   (
                   Array.isArray(this.filterTag) ? 
                     t.tags.some(x => this.filterTag.includes(x)) : 
                        t.tags.includes(this.filterTag) 
                          ): true
    ))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73451238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档