Typescript 我正在尝试过滤另一个数组中的数组

Typescript 我正在尝试过滤另一个数组中的数组,typescript,angular6,Typescript,Angular6,我正在尝试在这个场景中的另一个症状中过滤数组 我的数据和代码如下: illnesses = [ {"cause": "abc", "symptoms": ["A", "B", "C"]}, {"cause": "def", "symptoms": ["g", "s", "k", "j"]} ] filterCauses(searchString: string){ return this.illnesses.filter( (c) =&

我正在尝试在这个场景中的另一个症状中过滤数组

我的数据和代码如下:

illnesses = [

      {"cause": "abc", "symptoms": ["A", "B", "C"]},   
      {"cause": "def", "symptoms": ["g", "s", "k", "j"]}  
]


filterCauses(searchString: string){
    return this.illnesses.filter(
      (c) => {
        for (let i = 0; i < this.cause.length; i++) {
          c.symptoms.filter( d => d.symptoms[i].toLowerCase().indexOf(searchString.toLowerCase()) !== -1)
        }
      }
    )
}
疾病=[
{“原因”:“abc”,“症状”:[“A”,“B”,“C”]},
{“原因”:“定义”,“症状”:[“g”、“s”、“k”、“j”]}
]
筛选原因(搜索字符串:字符串){
退回这个.filter(
(c) =>{
for(设i=0;id.symptoms[i].toLowerCase().indexOf(searchString.toLowerCase())!=-1)
}
}
)
}
过滤器原因(搜索字符串:字符串){
返回this.diseases.filter(disease=>disease.symptoms.includes(searchString))
}
过滤器原因(搜索字符串:字符串){
返回this.diseases.filter(disease=>disease.symptoms.includes(searchString))
}

尝试
some
方法,该方法会告诉您数组中的任何项是否符合谓词:

如果需要包含带有传入搜索字符串的症状的任何
原因的整个数组,可以执行以下操作:

filterCauses(searchString:string){
searchString=searchString.toUpperCase();
返回this.diseases.filter((i)=>i.symptoms.some((s)=>s.toUpperCase()
。包括(搜索字符串));
}
更新1: 如果您只想了解可能的原因:

filterCauses(searchString:string):string[]{
searchString=searchString.toUpperCase();
返回this.diseases.filter((i)=>i.symptoms.some((s)=>s.toUpperCase()
.includes(searchString)).map((i)=>i.cause);
}
更新2:(在评论中询问) 如果您只想了解可能的症状:

filterCauses(searchString:string):string[]{
searchString=searchString.toUpperCase();
常量集合:集合=新集合();
本.疾病.forEach((i)=>{
i、 症状。forEach((s)=>{
if(s.toUpperCase().includes(searchString)){
症状集。添加;
}
}
}
返回Array.from(sympleSet.values());
}
更新3:(在评论中询问)
/@返回匹配症状的逗号分隔列表
筛选原因(搜索字符串:字符串):字符串{
searchString=searchString.toUpperCase();
常量集合:集合=新集合();
本.疾病.forEach((i)=>{
i、 症状。forEach((s)=>{
if(s.toUpperCase().includes(searchString)){
症状集。添加;
}
}
}
返回数组.from(sympleSet.values())
.reduce((acc:string,a:string)=>acc+=(acc?,,,,:“”)+a,);
}

尝试
some
方法,该方法会告诉您数组中的任何项是否符合谓词:

如果需要包含带有传入搜索字符串的症状的任何
原因的整个数组,可以执行以下操作:

filterCauses(searchString:string){
searchString=searchString.toUpperCase();
返回this.diseases.filter((i)=>i.symptoms.some((s)=>s.toUpperCase()
。包括(搜索字符串));
}
更新1: 如果您只想了解可能的原因:

filterCauses(searchString:string):string[]{
searchString=searchString.toUpperCase();
返回this.diseases.filter((i)=>i.symptoms.some((s)=>s.toUpperCase()
.includes(searchString)).map((i)=>i.cause);
}
更新2:(在评论中询问) 如果您只想了解可能的症状:

filterCauses(searchString:string):string[]{
searchString=searchString.toUpperCase();
常量集合:集合=新集合();
本.疾病.forEach((i)=>{
i、 症状。forEach((s)=>{
if(s.toUpperCase().includes(searchString)){
症状集。添加;
}
}
}
返回Array.from(sympleSet.values());
}
更新3:(在评论中询问)
/@返回匹配症状的逗号分隔列表
筛选原因(搜索字符串:字符串):字符串{
searchString=searchString.toUpperCase();
常量集合:集合=新集合();
本.疾病.forEach((i)=>{
i、 症状。forEach((s)=>{
if(s.toUpperCase().includes(searchString)){
症状集。添加;
}
}
}
返回数组.from(sympleSet.values())
.reduce((acc:string,a:string)=>acc+=(acc?,,,,:“”)+a,);
}

什么是预期输入和输出?预期输入可以是症状值中的任何内容,如果症状数组中存在该值,我将必须返回该值。能否显示预期输出?我需要返回症状数组的特定条目,就像输入是a一样,然后它应该过滤并从症状数组返回a作为输出t而不是返回所有条目什么是预期的输入和输出?预期的输入可以是症状值中的任何内容,如果症状数组中存在该值,我将必须返回该值。能否显示预期的输出?我需要返回症状数组的特定条目,就像输入是a一样,然后它应该过滤并从中返回a症状数组作为输出,而不是返回所有条目。它显示特定数组的每个条目,例如如果数据为{“原因”:“abc”,“症状”:[“A”,“B”,“C”]},那么它将显示A,B,CI。我不确定我是否在跟踪你……给定一个文本(症状名称的一部分),您想要什么?具有该症状的整个数组,或者仅仅是原因?我想要的是返回症状数组的特定条目,就像输入是a一样,然后它应该过滤并从症状数组返回a作为输出,而不是返回所有条目。非常感谢,它正在工作,我相信可以,但我必须在h中显示它tml模板和我用来显示的是{{somevar.symptoms}},但既然它是一个数组,我怎么能在那里显示它呢?非常感谢:)。它工作正常,html模板也很好。它显示特定数组的每个条目,就像数据是{“原因”:“abc”,“症状”:[“A”,“B”,“C”]},然后它会显示A,B,CI我不确定我是否在跟踪你…给定一个文本(症状名称的一部分),你想要什么?整个数组都有该症状,或者只是原因?我想要的是