如何将多层嵌套数组转换为符合要求的一维数组?
数组自定义扁平化实现方案
本次需求不是全量数组扁平化,不需要把最内层的数字数组也拆解,仅需要拆解外层包裹的纯数组容器,保留两类元素:
- 元素全为非数组的数组(示例中均为长度为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
相关产品推荐
相关产品推荐

