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

如何将多层嵌套数组转换为符合要求的一维数组?

数组自定义扁平化实现方案

本次需求不是全量数组扁平化,不需要把最内层的数字数组也拆解,仅需要拆解外层包裹的纯数组容器,保留两类元素:

  • 元素全为非数组的数组(示例中均为长度为2的数字数组)
  • 非数组类型的基础元素

实现思路

递归遍历数组的每个元素:

  1. 若当前元素是数组,且它的第一个子元素仍然是数组,说明该元素是需要拆解的外层容器,递归拆解该元素后将结果并入总数组
  2. 若不符合上述条件,说明是需要保留的最小单元,直接加入结果数组即可

代码示例

Python 实现

def custom_flatten(arr):
    result = []
    for item in arr:
        if isinstance(item, list) and isinstance(item[0], list):
            result.extend(custom_flatten(item))
        else:
            result.append(item)
    return result

# 测试用例
input_arr = [[1,2],[3,4],[5,6],[[1,25],[9,0]],[[[21,2],[22,5]],"ruby",[58,96]]]
print(custom_flatten(input_arr))
# 输出:[[1, 2], [3, 4], [5, 6], [1, 25], [9, 0], [21, 2], [22, 5], 'ruby', [58, 96]]

JavaScript 实现

function customFlatten(arr) {
  const result = []
  for (const item of arr) {
    if (Array.isArray(item) && Array.isArray(item[0])) {
      result.push(...customFlatten(item))
    } else {
      result.push(item)
    }
  }
  return result
}

// 测试用例
const inputArr = [[1,2],[3,4],[5,6],[[1,25],[9,0]],[[[21,2],[22,5]],"ruby",[58,96]]]
console.log(customFlatten(inputArr))
// 输出:[[1,2],[3,4],[5,6],[1,25],[9,0],[21,2],[22,5],"ruby",[58,96]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:45:03