MongoDB中将嵌套数组合并为一维数组的实现方法
二维数组扁平化解决方案
针对你提供的嵌套数组结构,以下是几种主流编程语言的实现方式,可将每个对象中的immunizationDetails二维数组转换为一维数组:
JavaScript 实现
利用数组原生的flat()方法快速扁平化数组,搭配map()遍历原数组即可完成转换:
const originalData = [ { "immunizationDetails": [ ["Rubella"], ["PCV13", "Tdap"] ] }, { "immunizationDetails": [ ["Hepatitis B", "HIB"], ["PCV13"] ] } ]; const transformedData = originalData.map(item => ({ ...item, immunizationDetails: item.immunizationDetails.flat() })); console.log(transformedData);
flat()默认扁平化一层嵌套,刚好匹配你的需求;若存在更深层级嵌套,可传入参数(如flat(Infinity))处理任意深度的嵌套数组。
Python 实现
可通过列表推导式或itertools.chain实现数组扁平化:
方式一:列表推导式
original_data = [ { "immunizationDetails": [ ["Rubella"], ["PCV13", "Tdap"] ] }, { "immunizationDetails": [ ["Hepatitis B", "HIB"], ["PCV13"] ] } ] transformed_data = [ { **item, "immunizationDetails": [vaccine for sublist in item["immunizationDetails"] for vaccine in sublist] } for item in original_data ] print(transformed_data)
方式二:使用itertools.chain
import itertools original_data = [ { "immunizationDetails": [ ["Rubella"], ["PCV13", "Tdap"] ] }, { "immunizationDetails": [ ["Hepatitis B", "HIB"], ["PCV13"] ] } ] transformed_data = [ { **item, "immunizationDetails": list(itertools.chain.from_iterable(item["immunizationDetails"])) } for item in original_data ] print(transformed_data)
两种方式均可将二维数组展开为一维,itertools.chain在处理大规模数据时性能更优。
内容的提问来源于stack exchange,提问作者Code The World
相关产品推荐
相关产品推荐

