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

请求修改单层深度数组扁平化代码,解决flatten([1,2])未抛异常问题

实现Crystal语言的单层数组扁平化方法

要实现仅展开一级嵌套的数组扁平化(也就是只处理直接包含的数组元素,更深层的嵌套保持原样),可以利用Crystal的flat_map方法来简洁实现,完全满足你给出的示例需求:

代码实现

def flatten_once(arr)
  arr.flat_map { |item| item.is_a?(Array) ? item : [item] }
end

测试示例验证

我们可以用你给出的测试用例验证效果:

  • flatten_once([1, [2], [[3]]]) → [1, 2, [3]]
  • flatten_once([1, 2, [[3]]]) → [1, 2, [3]]
  • flatten_once([[1, [[2, 3]]]]) → [1, [[2, 3]]]
  • flatten_once([1, 2]) → [1, 2]

代码解释

  • flat_map 方法会遍历数组的每个元素,将每个元素映射为一个数组,最后把所有这些数组拼接成一个新数组。
  • 对于每个元素:
    • 如果它本身是数组,直接返回该数组(这样flat_map会把它的元素直接拼接到结果里,实现一级展开);
    • 如果不是数组,就把它包装成一个单元素数组,确保它被直接加入结果中,不会被展开。

这个实现既简洁又高效,同时完全符合你需要的单层扁平化逻辑,而且处理[1,2]这类没有嵌套的数组时也能正常返回原数组,不会抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:48:33