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
      }
    })
  )
);