在Typescript中过滤嵌套数组对象的数组

tut*_*eed 4 javascript arrays filter angular

我在过滤嵌套数组数据集时遇到了一些麻烦。例如我下面有数据数组的列表:

let list = [
{
  "percentage": 50.0,
  "budget": "online",
  "ruleName": "C1"
},
{
  "percentage": 50.0,
  "budget": "offline",
  "ruleName": "C1"
},
{
  "percentage": 50.0,
  "budget": "other",
  "ruleName": "C4"
}
Run Code Online (Sandbox Code Playgroud)

]

现在,我想使用.map.filter并考虑以下条件来实现以下结果:如果父数组子组数组的budget属性匹配,则它应仅返回内匹配的对象,而不返回所有对象

[
  {
    "budget": "online",
    "ruleName": "C1",
    "group": [
        {
            "budget": "onlne",
            "percentage": 50.0
        }
    ]
  },

  {
    "budget": "offline",
    "ruleName": "C1",
    "group": [
        {
            "budget": "offline",
            "percentage": 50.0
        }
    ]
  },

  {
    "budget": "other",
    "ruleName": "C4",
    "group": [
        {
            "budget": "other",
            "percentage": 0
        }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

]

所以我执行了以下操作,但结果与上面的预期结果不符:

this.group = list.map((i)=>{
  return {
    budget: i.budget,
  }
})
this.payments = list.map((i)=>{
  return {
    budget: i.budget,
    amtPercentage: i.percentage ? i.percentage : 0,
    rulename: i.rulename,
    group: this.group
  }
})
Run Code Online (Sandbox Code Playgroud)

以上代码执行后,结果如下:

[
{
    "budget": "online",
    "ruleName": "C1",
    "group": [
        {
            "budget": "onlne",
            "percentage": 50.0
        },
        {
            "budget": "offline",
            "percentage": 50.0
        },
        {
            "budget": "other",
            "percentage": 0
        }
    ]
},

{
    "budget": "offline",
    "ruleName": "C1",
    "group": [
        {
            "budget": "onlne",
            "percentage": 50.0
        },
        {
            "budget": "offline",
            "percentage": 50.0
        },
        {
            "budget": "other",
            "percentage": 0
        }
    ]
},

{
    "budget": "other",
    "ruleName": "C4",
    "group": [
        {
            "budget": "onlne",
            "percentage": 50.0
        },
        {
            "budget": "offline",
            "percentage": 50.0
        },
        {
            "budget": "other",
            "percentage": 0
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

]

我没有任何线索可以根据以下条件来过滤嵌套的组数组:如果父数组budget属性等于group.budget属性,则它应该仅返回该对象,而不返回所有对象。

谢谢您的帮助。提前谢谢了。

注意:我正在使用带有angular-2的打字稿。