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

如何提取JSON对象中所有地区数组并合并为单一列表?

问题原因及解决方案

你用map处理后得到的是数组的数组,而非单一列表——因为每个国家的Regions本身就是数组,map只是把这些数组原封不动地收集到新数组里,比如示例数据会生成这样的结构:

[
  ["Adélie Land", "Argentine Antarctica", ...],
  [],
  ["Buenos Aires", "Cordoba", ...]
]

要把嵌套数组合并成单层列表,有几种简单的解决方法:

方法1:使用flatMap(推荐,一步到位)

flatMap相当于先执行map再对结果做一层扁平化,直接返回合并后的单层数组:

this.service.getData().subscribe((data: any) => {
  this.list = data.flatMap((c: any) => c.Regions);
});

方法2:map + flat

如果是旧环境不支持flatMap,可以先用map提取所有Regions数组,再用flat()扁平化:

this.service.getData().subscribe((data: any) => {
  this.list = data.map((c: any) => c.Regions).flat();
});

注:flat()默认只扁平化一层嵌套,正好匹配你的场景;如果有更深层级嵌套,可以传入参数(比如flat(2))。

方法3:使用reduce手动合并

通过reduce累加数组,把每个Regions合并到初始空数组中:

this.service.getData().subscribe((data: any) => {
  this.list = data.reduce((acc, curr) => acc.concat(curr.Regions), []);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:54:28