Arrays 带数组的typescript筛选器数组
在这里打断我的头。。。。 我想用另一个数组过滤一个数组 在用例中,我有一个数组,可以使用动态复选框过滤该数组 到目前为止,我已经提出了以下代码:Arrays 带数组的typescript筛选器数组,arrays,typescript,Arrays,Typescript,在这里打断我的头。。。。 我想用另一个数组过滤一个数组 在用例中,我有一个数组,可以使用动态复选框过滤该数组 到目前为止,我已经提出了以下代码: var filteredList = this.arrayList.filter(function(e){ return activeCheckbuttons.filter(function(e2){ return e2.Description != e.Description
var filteredList = this.arrayList.filter(function(e){
return activeCheckbuttons.filter(function(e2){
return e2.Description != e.Description
}).length == 0;
})
上面的代码在只单击一个复选框时有效,但在单击两个复选框时无效
有人吗
谢谢,我想,对于
数组列表中的每个项目,您需要检查activeCheckbuttons
中是否有相同描述的项目。如果有,我们将该项添加到结果中,但如果没有,我们将忽略它们:
const filteredList = this.arrayList.filter(item1 =>
!!activeCheckbuttons.find(item2 => item1.Description === item2.Description)
);
现在,看看这段代码的工作原理:
- 使用
filter
检查数组中的每个元素。如果该项的谓词返回true
,则返回elment。不是,它被跳过
- 在谓词内部,我们使用
find
方法确定要检查的项是否存在于activeCheckbuttons
数组中(比较它们的描述)find
返回与条件匹配的第一个元素,因此,如果找到一个,则该项的谓词为true
。如果没有找到任何,则返回null
,即false
,并且该项不会出现在过滤后的数组中
您将看到我也在使用代码>操作员。此运算符仅应用了逻辑not
运算符两次。为什么?正如将对象强制转换为值true
和将null
强制转换为false一样:
!!{}
->!(!{})
->!(假)
->true
!!空
->!(!null)
->!(真)
->假
这并不是必须的,但我确实喜欢这样做,以便在代码中明确我想要返回true
或false
而不是objects或null
如我在评论中所述,代码中的问题是过滤第二个数组,删除所有与正在检查的项描述不同的元素。当然,如果有多个元素,我想它们是不同的,因此filter
函数返回至少一个元素,mainfilter
返回false
,结果数组为空
如果这不完全是您需要过滤的方式,请告诉我,我将相应地修改代码我认为,对于arrayList
中的每个项目,您需要检查activeCheckbuttons
中是否有具有相同描述的项目。如果有,我们将该项添加到结果中,但如果没有,我们将忽略它们:
const filteredList = this.arrayList.filter(item1 =>
!!activeCheckbuttons.find(item2 => item1.Description === item2.Description)
);
现在,看看这段代码的工作原理:
- 使用
filter
检查数组中的每个元素。如果该项的谓词返回true
,则返回elment。不是,它被跳过
- 在谓词内部,我们使用
find
方法确定要检查的项是否存在于activeCheckbuttons
数组中(比较它们的描述)find
返回与条件匹配的第一个元素,因此,如果找到一个,则该项的谓词为true
。如果没有找到任何,则返回null
,即false
,并且该项不会出现在过滤后的数组中
您将看到我也在使用代码>操作员。此运算符仅应用了逻辑not
运算符两次。为什么?正如将对象强制转换为值true
和将null
强制转换为false一样:
!!{}
->!(!{})
->!(假)
->true
!!空
->!(!null)
->!(真)
->假
这并不是必须的,但我确实喜欢这样做,以便在代码中明确我想要返回true
或false
而不是objects或null
如我在评论中所述,代码中的问题是过滤第二个数组,删除所有与正在检查的项描述不同的元素。当然,如果有多个元素,我想它们是不同的,因此filter
函数返回至少一个元素,mainfilter
返回false
,结果数组为空
如果这不完全是您需要进行筛选的方式,请告诉我,我将相应地修改代码,因此,为了澄清,您希望筛选arrayList
,并仅返回那些说明
与activeCheckbuttons
中的任何项目匹配的项目。或者你只想得到那些与任何一个都不匹配的元素?仔细阅读,你要做的是过滤所有描述与activeCheckbuttons中的所有项不相同的元素,因此,当然,如果数组中有两个项,除非它们是相同的项或具有相同的描述,您将不会得到任何结果。因此,为了澄清这一点,您需要筛选arrayList
,并仅返回那些Description
与activeCheckbuttons
中的任何项目相匹配的项目。或者你只想得到那些与任何一个都不匹配的元素?仔细阅读,你要做的是过滤所有描述与activeCheckbuttons中的所有项不相同的元素,因此,当然,如果数组中有两个项,除非它们是相同的项或具有相同的描述,你最终不会有结果的。你好,奥斯卡,谢谢你帮我。我不确定我是否正确理解了你的答案,例如:想象一张名单,上面有三种不同性别的人:(m)ale,(F)emale和(U)nkown。所以我也有3个复选框,当选择M和F时,我想从中过滤掉所有的男性和女性