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

如何用JavaScript编写简短代码输出给定数组的所有子数组

JavaScript 输出数组所有子数组的实现方案

子数组指的是数组内的连续元素序列,以下是不同形式的实现方案:

原参考代码逻辑说明

你提供的三层循环实现逻辑是通顺的,核心是遍历所有可能的子数组起止下标,拼接对应区间元素后输出:

var s = [1, 2, 3, 4, 5, 6];
for (var i = 0; i < s.length; i++) {
  for (var j = i; j < s.length; j++) {
    str = "";
    for (var k = i; k <= j; k++) {
      str += s[k];
    }
    console.log(str);
  }
}

该方案时间复杂度为O(n³),可以通过JS内置的数组切片方法精简代码、优化执行效率。

更简短的实现方案

方案1:精简循环实现(直接打印子数组)

删除冗余的第三层拼接循环,用slice方法直接截取区间元素:

// 入参为任意目标数组
function printAllSubarrays(arr) {
  for (let i = 0; i < arr.length; i++) {
    for (let j = i; j < arr.length; j++) {
      // 如需输出拼接字符串,改为 arr.slice(i, j+1).join('') 即可
      console.log(arr.slice(i, j + 1))
    }
  }
}

// 调用示例
printAllSubarrays([1,2,3,4,5,6])

方案2:极简实现(返回包含所有子数组的二维数组)

如果不需要直接打印,而是要把所有子数组收集为新数组返回,可以用flatMap+map组合实现短代码写法:

const getAllSubarrays = arr => arr.flatMap((_, i) => arr.slice(i).map((_, j) => arr.slice(i, i + j + 1)))

// 调用示例:输出包含所有子数组的二维数组
console.log(getAllSubarrays([1,2,3,4,5,6]))

内容的提问来源于stack exchange,提问作者Naseeb Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:36:04