首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何过滤BlockList?

如何过滤BlockList?
EN

Stack Overflow用户
提问于 2022-02-11 06:40:00
回答 1查看 51关注 0票数 1

首先,我不是说英语的人。我是个初学者。如果我的英语不太好,请理解

我正在创建一个实时聊天应用程序,并过滤来自我被屏蔽者的消息,所以我正在过滤整个消息中被屏蔽人的目标号码。但是这个过滤过程不太好。你能帮帮我吗?

  1. 消息以来自服务器的对象安排的形式出现.

像这样

代码语言:javascript
复制
Message :  [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]

{type: 'message', idx: 1313231, name: '%E3%85%81%E3%84%B4%E3%85%87%E3%85%81', message: 'hello'}

https://i.stack.imgur.com/vMur3.png

  1. 类似,块列表也以来自服务器的对象数组的形式接收。

idx是用户的idx目标被阻塞idx

代码语言:javascript
复制
blockList 
   [{…}]
 > 0: {idx: 1321, target: 2231, timestamp: 1644561250499}
    length: 1
[[Prototype]]: Array(0)

https://i.stack.imgur.com/eLnYQ.png

所以,如果blockList.target !== enterMsg.idx,我想过滤这个消息,但是它不起作用,所以我尝试了一些方法

代码语言:javascript
复制
  const blockMap = blockList.map((el) => el.target)

 const filterdMessage  = () => {enterMsg.filter((msg)=> {
   const realfiltered = enterMsg.filter((el) => {
    blockMap.map((bl) => {
      return el.idx !== bl
    })
   })
    })};

但是它是空数组,我如何修复它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-11 06:57:09

我想说,对数组函数有一个误解:也许您应该检查文档;)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

然后要筛选数组(消息列表),而筛选函数必须返回布尔值,因此您可能需要这样的内容:

代码语言:javascript
复制
const filterdMessage  = enterMsg.filter((msg)=> {
  return !blockList.some((bl) => {
     return msg.idx === bl.target
  })
})

我们在这里所做的是:

  • 告诉我们,如果块列表中没有一个条目具有与其idx

匹配的目标,则我们希望根据将在提供的回调

  • 中为每个消息检查计算的条件过滤enterMsg数组。

我们使用一些函数,如果找到匹配的块,它将返回true,而且由于我们不想要匹配块,所以我们否定了条件

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71076065

复制
相关文章

相似问题

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