如何使用JS解构获取嵌套数组最内层长度 现有写法返回异常如何修复
问题原因
- 解构层级匹配错误:你当前的解构模式
[,[[,objects]]]仅能提取到data每个子项中第二层数组的第一个元素(也就是'a'对应的对象数组),解构不会自动遍历同层级的所有元素,因此你漏掉了'b'等其他分类对应的对象数组。 - 方法拼写错误:JS数组的遍历方法是大小写敏感的
forEach,你原代码中的小写foreach会直接抛出语法错误。
修复方案
保留解构写法的前提下,你需要嵌套一层遍历覆盖所有分类项,调整后的代码如下:
// 外层遍历data的每个条目,解构跳过序号位,拿到分类数组 data.forEach(([, categoryList]) => { // 内层遍历每个分类,解构跳过分类名字段,拿到最内层对象数组 categoryList.forEach(([, objects]) => { console.log(objects.length) }) })
如果要保留你原有的单函数赋值写法,也可以改成如下形式:
const foo = ([, categoryList]) => categoryList.forEach(([, objects]) => console.log(objects.length)); data.forEach(foo);
附加问题解答
这种语法确实是数组解构赋值,属于ES6新增的解构语法分支,和对象解构的核心逻辑一致,只是数组解构按索引顺序匹配值,你可以用逗号跳过不需要的索引位,直接提取目标位置的值。
内容的提问来源于stack exchange,提问作者floatingpurr
相关产品推荐
相关产品推荐

