Angular 基于搜索值筛选子对象

Angular 基于搜索值筛选子对象,angular,typescript,angular8,Angular,Typescript,Angular8,我有一个搜索字段,用户可以在其中键入任何单词以获得所需的结果。我的物体向下看 [{ "parentid":100, "parentname":"A", "child" : [ { "childid": 1, "childname": "X1", }, {

我有一个搜索字段,用户可以在其中键入任何单词以获得所需的结果。我的物体向下看

[{
  "parentid":100,
  "parentname":"A",
  "child" : [
       {
          "childid": 1,
          "childname": "X1",
       },
       {
          "childid": 2,
          "childname": "X2",
       }]
  },
  {
  "parentid":200,
  "parentname":"B",
  "child" : [
       {
          "childid": 3,
          "childname": "X3",
       },
       {
          "childid": 4,
          "childname": "X4",
       }]
  }
]
如果搜索值为
X4
,我将得到下面的结果

{
      "parentid":200,
      "parentname":"B",
      "child" : [
           {
              "childid": 3,
              "childname": "X3",
           },
           {
              "childid": 4,
              "childname": "X4",
           }]
      } 
到目前为止我所尝试的是

//this works if user search for parentname
onSearchChange(searchValue: string): void {  
    this.result = this.originalList.filter(f=>f.parentname.indexOf(searchValue) !== -1);
  }

//I tried below to search for parentname or childname, but no luch
onSearchChange(searchValue: string): void {  
    this.result = this.originalList.filter(f=>f.parentname.indexOf(searchValue) !== -1 ||
                      f.child.foreach(y=>y.childname.indexOf(searchValue) !== -1));
  }
让arr=[{
“家长ID”:100,
“家长姓名”:“A”,
“儿童”:[
{
“孩子”:1,
“childname”:“X1”,
},
{
“孩子”:2,
“childname”:“X2”,
}]
},
{
“家长ID”:200,
“家长姓名”:“B”,
“儿童”:[
{
“孩子”:3,
“儿童姓名”:“X3”,
},
{
“孩子”:4,
“儿童姓名”:“X4”,
}]
}
];
让filteredArray=arr.filter((element)=>element.child.some((child)=>child.childname==“X4”);
控制台日志(filteredArray)
this.result = this.originalList.filter(f => 
  f.parentname.includes(searchvalue) ||
  f.child.some(c => c.childname.includes(searchvalue))
);