Javascript 如何检查嵌套forEach循环的结束
我尝试在遍历所有父数组子数组后执行一些命令,我尝试使用该条件,但到目前为止无法达到预期的结果Javascript 如何检查嵌套forEach循环的结束,javascript,Javascript,我尝试在遍历所有父数组子数组后执行一些命令,我尝试使用该条件,但到目前为止无法达到预期的结果 我们应该如何处理这个问题?看起来有点脏,但可能满足您的需要 A.forEach((a, i) => a.B.forEach((b, j) => b.C.forEach((c, k) => { // most inner loop logic // something like console.log(A[i].B[j].C[k]) if
我们应该如何处理这个问题?看起来有点脏,但可能满足您的需要
A.forEach((a, i) =>
a.B.forEach((b, j) =>
b.C.forEach((c, k) => {
// most inner loop logic
// something like console.log(A[i].B[j].C[k])
if (/* condition */) {
// execute once at the end
}
})
)
);
请添加
A
和您想要实现的目标。您所说的“最后执行一次”具体是什么意思?如果您希望在A.forEach()
完成后发生某些事情,那么您不想将其放在调用A.forEach()
之后吗?我想OP希望知道他何时在递归循环的最后一个元素上。基本上当i==A.length-1&&j==A.B.length-1&&k==B.C.length-1
时。但这很难说。@NinaScholz A、B和C都是对象数组,我假设这可以通过对它们使用forEach
推断出来。在循环遍历所有数组项并到达最后一个最内部的子项后,我想执行一些代码。@David如果在大型数组中循环,计算可能需要一些时间,这意味着a.forEach()
之后的块可能会在循环仍在运行(并行)时执行,甚至完成,这可能会导致一些问题,特别是如果下一个块使用的是a
的修改版本,这就是循环首先存在的原因。我将测试它,但乍一看我认为a.length-1
不会这样做,因为该值在每个循环中都会更改。不,这是列表的大小。每个循环都是固定的。只有i j k在更改。它应该是i===A.length-1
,刚刚测试过。当然,对不起,输入错误。
A.forEach((a, i) =>
a.B.forEach((b, j) =>
b.C.forEach((c, k) => {
// most inner loop logic
// something like console.log(A[i].B[j].C[k])
if (i === A.length-1 &&
j === a.B.length-1 &&
k === b.C.length-1) {
// execute once at the end
}
})
)
);