如何获取两层嵌套ForEach数组中外层ForEach的索引
两层嵌套ForEach获取外层索引的实现方法
有两种常用的实现方案:
方案1:使用enumerated()同时获取外层元素与索引(兼容性最好)
通过enumerated()方法遍历外层数组,可以同时拿到索引和对应元素,直接在内层ForEach中访问外层索引变量即可:
// 注意修改外层、内层的闭包参数名,避免重名覆盖 ForEach(Array(total.enumerated()), id: \.element.id) { outerIndex, outerItem in ForEach(number, id: \.id) { innerItem in // 此处 outerIndex 就是外层total数组的对应索引 print("当前外层索引:\(outerIndex)") } }
方案2:遍历外层数组索引范围(适合需要操作数组元素的场景)
如果需要对外层元素做修改操作,可以直接遍历数组的索引区间,再通过下标取对应元素:
ForEach(total.indices, id: \.self) { outerIndex in let outerItem = total[outerIndex] ForEach(number, id: \.id) { innerItem in // 直接使用 outerIndex 即可 } }
注意事项
- 不要给两层ForEach的闭包参数设置相同的名称,否则内层参数会覆盖外层参数,导致无法访问外层的变量或索引
- 方案2要求外层数组是不会动态增删元素的恒等数组,如果数组会动态修改,建议使用方案1避免索引错位
内容的提问来源于stack exchange,提问作者user16856881
相关产品推荐
相关产品推荐

