JavaScript中如何为flatMap扁平化后的每个对象新增键值对
实现方案
注意:你贴出的原始示例数组中,第二个对象的LineItemRef: "Image"行末尾缺少逗号,实际运行前请补上,否则会抛出语法错误
你原有代码的问题是flatMap回调里只提取了ImageFileSet字段,没有关联同层级的LineItemFile属性,也没有给展平后的每个子项追加该字段,直接按下面的写法修改即可:
const allFiles = arr.flatMap(({ ImageFileSet, LineItemFile }) => { // 遍历当前项的ImageFileSet,给每个文件对象追加对应的LineItemFile return ImageFileSet.map(file => ({ ...file, LineItemFile })) })
逻辑说明
- 遍历外层数组元素时,同时解构出当前项的
ImageFileSet数组和对应的LineItemFile值 - 对
ImageFileSet内部的每个文件对象做映射,通过展开运算保留原有id等属性,再追加当前外层项对应的LineItemFile flatMap会自动将内层映射生成的二维数组展平为一维数组,无需额外调用flat方法
运行后得到的输出和你预期完全一致:
[ { id: 1, LineItemFile: "new name" }, { id: 7, LineItemFile: null }, { id: 8, LineItemFile: null }, { id: 9, LineItemFile: null } ]
内容的提问来源于stack exchange,提问作者someone
相关产品推荐
相关产品推荐

