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的打字稿。
this.payments = list.map((i)=>{
return {
budget: i.budget,
amtPercentage: i.percentage ? i.percentage : 0,
rulename: i.rulename,
group: this.group.filter((x) => i.budget === x.budget)
}
})
Run Code Online (Sandbox Code Playgroud)