我正在尝试按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;
}
您可以将map
和filter
一起使用来实现您的结果。
这是一个工作示例。
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));