首先,我不是说英语的人。我是个初学者。如果我的英语不太好,请理解
我正在创建一个实时聊天应用程序,并过滤来自我被屏蔽者的消息,所以我正在过滤整个消息中被屏蔽人的目标号码。但是这个过滤过程不太好。你能帮帮我吗?
像这样
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
与
。
idx是用户的idx目标被阻塞idx
blockList
[{…}]
> 0: {idx: 1321, target: 2231, timestamp: 1644561250499}
length: 1
[[Prototype]]: Array(0)https://i.stack.imgur.com/eLnYQ.png
所以,如果blockList.target !== enterMsg.idx,我想过滤这个消息,但是它不起作用,所以我尝试了一些方法
const blockMap = blockList.map((el) => el.target)
const filterdMessage = () => {enterMsg.filter((msg)=> {
const realfiltered = enterMsg.filter((el) => {
blockMap.map((bl) => {
return el.idx !== bl
})
})
})};但是它是空数组,我如何修复它呢?
发布于 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
然后要筛选数组(消息列表),而筛选函数必须返回布尔值,因此您可能需要这样的内容:
const filterdMessage = enterMsg.filter((msg)=> {
return !blockList.some((bl) => {
return msg.idx === bl.target
})
})我们在这里所做的是:
匹配的目标,则我们希望根据将在提供的回调
我们使用一些函数,如果找到匹配的块,它将返回true,而且由于我们不想要匹配块,所以我们否定了条件
https://stackoverflow.com/questions/71076065
复制相似问题