Are*_*rot 3 javascript arrays loops object reactjs
我发现过滤嵌套对象数组很困难。有人可以让我知道我哪里出了问题吗?
这是数据,我想过滤掉所有有风险的对象P1
{
"title": "QA",
"rows": [
{
"risk": "P1",
"Title": "Server down",
},
{
"risk": "P3",
"Title": "Permission issue",
}
]
},
{
"title": "Prod",
"rows": [
{
"risk": "P5",
"Title": "Console log errors fix",
},
{
"risk": "P1",
"Title": "Server is in hung state",
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
我想要的结果如下
[
{
"title": "QA",
"rows": [
{
"risk": "P1",
"Title": "Server down",
}
]
},
{
"title": "Prod",
"rows": [
{
"risk": "P1",
"Title": "Server is in hung state",
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
为了实现这一目标,我尝试了这种方法,但无法得到想要的结果。有人可以告诉我哪里出了问题吗
data.forEach((element, index) => {
return element.rows.filter( x => x.risk === 'P1' )
});
Run Code Online (Sandbox Code Playgroud)
const input = [
{
title: "QA",
rows: [
{
risk: "P1",
Title: "Server down",
},
{
risk: "P3",
Title: "Permission issue",
},
],
},
{
title: "Prod",
rows: [
{
risk: "P5",
Title: "Console log errors fix",
},
{
risk: "P1",
Title: "Server is in hung state",
},
],
},
];
const output = input.map((obj) => ({
...obj,
rows: obj.rows.filter((row) => row.risk === "P1"),
}));
console.log(output);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)
您希望为每个原始对象值返回一个对象,即映射,1:1
因此您的主要操作是map()
。
然后,您想要返回相同的对象,只是该属性rows
应该只包含rows
with risk === "P1"
,因此您需要行filter()
并使用该更新的属性创建一个新对象(您应该将对象视为immutable)rows
。