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

Elixir中如何去除嵌套列表的多余方括号?

解决Elixir列表多余嵌套方括号的递归实现

你可以通过递归遍历并展开单元素嵌套列表的方式实现需求,同时保留关键字对的结构。以下是具体的代码实现:

defmodule NestedFlattener do
  def flatten_single_nested(item) when is_list(item) do
    case item do
      # 展开单元素列表,递归处理内部元素
      [inner] -> flatten_single_nested(inner)
      # 多元素列表则逐个处理每个元素
      _ -> Enum.map(item, &flatten_single_nested/1)
    end
  end

  # 处理关键字对(二元元组),递归展开值部分
  def flatten_single_nested({key, value}) do
    {key, flatten_single_nested(value)}
  end

  # 非列表/非二元元组的元素直接返回
  def flatten_single_nested(item), do: item
end

使用示例

input = [ :juridical_person_document, [re_developments: [[properties: [[re_development: [:re_developer]]]]]], :legal_address ]
output = NestedFlattener.flatten_single_nested(input)

# 输出结果:
# [ :juridical_person_document, re_developments: [properties: [re_development: [:re_developer]]], :legal_address ]

逻辑说明

  • 列表处理:如果当前列表只有一个元素,就递归展开这个元素(去除一层方括号);如果是多元素列表,则遍历每个元素分别处理后重组。
  • 关键字对处理:针对Elixir的关键字结构(二元元组),保持键不变,仅递归处理值部分,确保值里的嵌套方括号也被清理。
  • 基础元素处理:原子、数字等非嵌套结构直接返回,不做修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:16:04