如何过滤掉对象内部数组字段中的字段?



我正在尝试按id过滤对象内的数组字段。

这就是我试图做的:

editPhases(id) {
var formules = this.allFormules
for (let i = 0; i < formules.length; i++) {
for (let i = 0; i < formules[i].phases.length; i++) {
if(formules[i].phases[i]._id == id) {
console.log("ok")
}
}
}

Formules是一个对象数组,每个对象都有一个称为相位的数组字段。 我想在这个字段上做一个 for 循环并找到phases._id == id 的位置。

谢谢!

将变量j添加到内部循环中,并使用它来调用phares项。

function editPhases(id) {
const formules = this.allFormules;
const results = [];
for (let i = 0; i < formules.length; i++) {
for (const j = 0; j < formules[j].phases.length; i++) {
if (formules[i].phases[j]._id === id) {
results.push(formules[i].phases[j]);
}
}
}
return results;
}

您可以将mapfilter一起使用来实现您的结果。

这是一个工作示例。

const allFormules = [{
phases: [
{_id: 1},
{_id: 2}
]
}, {
phases: [
{_id: 1},
{_id: 2},
{_id: 3}
]
}];
function editPhases(id) {
const formules = allFormules;
formules.map(formule => 
formule.phases = formule.phases.filter(phases => phases._id == id)
);

return formules;
}
console.log(editPhases(1));

最新更新