You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript嵌套数组处理:解决嵌套循环输出undefined问题

解决嵌套数组遍历输出undefined的问题

问题重现

你的代码需求是打印数组中的嵌套数组元素,但当前实现会在第一个嵌套数组遍历结束后输出undefined:

let newArray = ["Ameen", "John", ["Working", "Studying"], [10, 100, 30, 40]];

for (let i = 0; i < newArray.length; i++) {

// `Nested For Loop To Print The Nested Arrays`

  for (let j = 0; j <= i; j++) {
    if (Array.isArray(newArray[i])) {
      console.log(`Nested Array ${newArray[i][j]}`);
    }
  }
}
console.log(`Whole Array: ${newArray}`);

问题根源正如你所说:当父循环i=2时,嵌套循环的条件j<=i会让j尝试访问索引2,但第一个嵌套数组["Working", "Studying"]只有2个元素(索引0、1),访问不存在的索引自然返回undefined。

修正方案

核心是让嵌套循环的遍历范围基于当前嵌套数组的实际长度,而不是父循环的索引i,同时优化逻辑,避免对非数组元素执行无用循环:

修正后的代码

let newArray = ["Ameen", "John", ["Working", "Studying"], [10, 100, 30, 40]];

for (let i = 0; i < newArray.length; i++) {
  // 先判断当前元素是否为嵌套数组,再启动内部循环
  if (Array.isArray(newArray[i])) {
    // 内部循环仅遍历当前嵌套数组的有效索引
    for (let j = 0; j < newArray[i].length; j++) {
      console.log(`Nested Array ${newArray[i][j]}`);
    }
  }
}
console.log(`Whole Array: ${newArray}`);

可选简化写法

如果想让代码更简洁易读,可以使用forEach遍历:

let newArray = ["Ameen", "John", ["Working", "Studying"], [10, 100, 30, 40]];

newArray.forEach(item => {
  if (Array.isArray(item)) {
    item.forEach(elem => console.log(`Nested Array ${elem}`));
  }
});
console.log(`Whole Array: ${newArray}`);

内容的提问来源于stack exchange,提问作者Ameen Shamsan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 03:42:52