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

如何将数组按空字符串分割为多个子数组?

数组分割解决方案

给定原数组:

[
  '1000', '2000',  '3000',
  '',     '4000',  '',
  '5000', '6000',  '',
  '7000', '8000',  '9000',
  '',     '10000'
]

需要将其分割为以空字符串为分隔符的非空子数组,最终结果如下:

[
  ['1000', '2000', '3000'],
  ['4000'],
  ['5000', '6000'],
  ['7000', '8000', '9000'],
  ['10000']
]

以下是两种可行的实现方案:

方案一:使用数组reduce方法

const originalArray = [
  '1000', '2000',  '3000',
  '',     '4000',  '',
  '5000', '6000',  '',
  '7000', '8000',  '9000',
  '',     '10000'
];

const result = originalArray.reduce((acc, current) => {
  if (current === '') {
    // 遇到空串时,仅当最后一个子数组非空才新增空数组,避免连续空串生成空数组
    if (acc.length === 0 || acc[acc.length - 1].length > 0) {
      acc.push([]);
    }
  } else {
    // 非空元素直接加入最后一个子数组,没有子数组则先创建
    if (acc.length === 0) {
      acc.push([]);
    }
    acc[acc.length - 1].push(current);
  }
  return acc;
}, []).filter(subArr => subArr.length > 0); // 过滤掉可能存在的空数组

console.log(result);

方案二:普通循环实现(更直观易懂)

const originalArray = [
  '1000', '2000',  '3000',
  '',     '4000',  '',
  '5000', '6000',  '',
  '7000', '8000',  '9000',
  '',     '10000'
];

const result = [];
let currentSubArr = [];

for (const item of originalArray) {
  if (item === '') {
    // 遇到空串且当前子数组有内容时,将其存入结果并重置
    if (currentSubArr.length > 0) {
      result.push(currentSubArr);
      currentSubArr = [];
    }
  } else {
    currentSubArr.push(item);
  }
}

// 处理循环结束后剩余的非空子数组
if (currentSubArr.length > 0) {
  result.push(currentSubArr);
}

console.log(result);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:31:17