0

0

如何使用 Lodash 将嵌套对象数组中的 nodes 字段提取为二维数组结构

聖光之護

聖光之護

发布时间:2026-01-05 16:40:35

|

121人浏览过

|

来源于php中文网

原创

如何使用 Lodash 将嵌套对象数组中的 nodes 字段提取为二维数组结构

本文介绍如何利用 lodash 的链式操作(尤其是 `map` 与 `map` 组合)将形如 `[{ nodes: [...] }, ...]` 的二维嵌套结构,精准转换为仅包含 `nodes` 数组的纯二维数组,避免 `flatmap` 导致的扁平化错误。

在处理 GraphQL 响应时,常遇到多层嵌套结构——例如你当前的数据是一个二维数组(Array>),其中每个内层数组由多个对象组成,而每个对象仅有一个 nodes 属性,其值为一个数组。你的目标并非展平整个结构,而是保持外层数组维度不变,仅将每个内层对象替换为其 nodes 值。此时若误用 flatMap(如 flatMap('ciVariables.nodes')),会导致所有 nodes 数组被合并到顶层一维数组中,完全破坏原有分组逻辑。

正确的解法是采用双层映射(nested mapping):外层 map 遍历最外层数组(即每个子数组),内层 map 遍历该子数组中的每个对象,并提取其 nodes 字段。这恰好对应 Lodash 链式调用中的 .map().map() 模式:

const result = _.chain(resp.data.data.projects.nodes)
  .map(arr => _.map(arr, 'nodes')) // 外层 map + 内层 map(Lodash 支持字符串路径简写)
  .value();

✅ 等价于原生写法:

Build AI
Build AI

为您的业务构建自己的AI应用程序。不需要任何技术技能。

下载
const result = resp.data.data.projects.nodes.map(subArr =>
  subArr.map(item => item.nodes)
);

⚠️ 注意事项:

  • 不要使用 flatMap('ciVariables.nodes'):flatMap 会先映射再扁平一层,导致 [[a],[b],[c]] → [a,b,c],丢失原始二维结构;
  • 若原始路径更深(如 ciVariables[0].nodes),需确保数据结构稳定,或改用函数式访问(item => item.ciVariables?.[0]?.nodes)增强健壮性;
  • 在链式调用中,.map(arr => _.map(arr, 'nodes')) 是推荐写法——既保持可读性,又充分利用 Lodash 对属性路径的优化支持。

最终输出严格维持输入的二维形状:外层数组长度不变,每个子数组长度不变,仅内容从 { nodes: [...] } 替换为 [...]。这是处理 GraphQL 分页/分组响应中常见嵌套字段的标准范式。

相关专题

更多
treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

534

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

17

2025.12.22

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

15

2026.01.06

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

75

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

32

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

59

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

37

2025.11.27

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

3

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

26

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 6.7万人学习

前端基础到实战(HTML5+CSS3+ES6+NPM)
前端基础到实战(HTML5+CSS3+ES6+NPM)

共162课时 | 18.8万人学习

第二十二期_前端开发
第二十二期_前端开发

共119课时 | 12.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号