ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

扁平化嵌套数据结构

2022-09-07 01:34:08  阅读:201  来源: 互联网

标签:扁平化 可以 嵌套 过滤 数据结构 数据 我们


扁平化嵌套数据结构

当我们想要根据数据嵌套属性过滤信息时,处理嵌套数据可能是一个棘手的问题。例如,从下面的数据集中,我们想要创建一个方法,该方法可以根据作为参数传递的项目名称返回“Fruits”或“Vegetables”:

数据库中的每个对象都被归类为具有类型的“水果”或“蔬菜”,在该类型中我们有许多单独的项目。我发现树形结构图有助于轻松理解嵌套数据:

Tree diagram of nested JSON

对于我们来说,我们可以直观地猜测一个物品是否是一种蔬菜水果,并给出它的名字。我们的挑战是创建一个可以接收项目名称并返回其类别(水果或蔬菜)的方法。然而,计算机必须通过过滤这个嵌套数据结构来解决这个问题。

为此,我们希望创建可以轻松过滤的扁平数据。以下是使用 Scala 案例类的所需平面结构中的数据示例模型:

所以我们现在可以创建一个服务/助手,它可以展平数据,然后通过它过滤找到与给定参数匹配的名称。让我们从定义我们的函数输入和输出开始:

我们使用一个空的 列表() 为了确保我们的代码可以编译。我们的对象方法用于将数据转换为易于过滤的结构。就像编程中的所有事情一样,增量方法是最有效的,所以我们首先将这些数据扁平化为一层嵌套:

在这第一步中,我们分解了第一层嵌套,将项目类别和 itemsWithinCategory 保存为变量。我们已经使用 foldLeft 来解构第一层嵌套,我们可以以类似的方式再次使用它来解构保存在“itemsWithinCategory”变量中的第二层。

此时,我们已经使用 foldLeft 提取并保存了创建扁平数据对象“FlatFruitOrVeg”所需的每条信息。我们现在可以映射这些值以生成我们扁平化的数据结构。

通过第 16 行,我们可以验证 FlatFruitOrVeg 的扁平化列表是否正确。现在我们已经达到了预期的结果,我们可以重构这个方法:

现在我们有了一个可以展平接收到的嵌套数据的方法,我们可以过滤以搜索包含搜索名称的项目并返回其类别:

完美的 !这 ” getCategoryByItemName ” 方法现在可以接受项目的名称作为参数并返回匹配的类别。这允许计算机通过项目名称来确定它是水果还是蔬菜。

我发现这种重组嵌套数据的方法非常有趣,我喜欢使用简单的增量过程来系统地查看最终目标的进展情况。通过将每个步骤打印到控制台,您可以断言输出与每个阶段的预期结果相匹配,从而最大限度地减少错误。

谢谢瑞恩皮埃尔@ 制造商 领导一个伟大的研讨会,激发了这篇文章。希望对你有用!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/20754/48570700

标签:扁平化,可以,嵌套,过滤,数据结构,数据,我们
来源: https://www.cnblogs.com/amboke/p/16663879.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有