如何用Lodash将GraphQL响应中的对象转为目标嵌套数组结构
解决Lodash处理GraphQL响应的结构转换问题
要保持两层数组结构,直接用map替代flatMap即可,链式调用修改为:
_.chain(resp.data.data.projects.nodes).map('ciVariables.nodes').value()
原因说明:
flatMap的作用是先映射再扁平化一层,所以你用flatMap('ciVariables.nodes')时,会把每个ciVariables.nodes数组里的元素都提取到顶层数组,破坏了原有的两层结构。map则是单纯对原数组的每个元素做映射转换,将每个元素替换为对应的ciVariables.nodes数组,完美保留了两层数组的结构,正好符合你的需求。
举个简单的示例验证:
假设原响应数据结构如下:
const resp = { data: { data: { projects: { nodes: [ { ciVariables: { nodes: [{ id: 1 }, { id: 2 }] } }, { ciVariables: { nodes: [{ id: 3 }, { id: 4 }] } } ] } } } };
使用修改后的链式调用,得到的结果是:
[[{ id: 1 }, { id: 2 }], [{ id: 3 }, { id: 4 }]]
完全符合你需要的两层数组结构。
内容的提问来源于stack exchange,提问作者nrgyzer
相关产品推荐
相关产品推荐

