合并具有公共元素和多个数据点的数组

2023-11-29

我正在尝试使用直接的 Javascript 将两个 Javascript 数组合并为一个数组。

我正在努力准确地完成以下两个问题中所提出的问题。然而,我的数据有几个点需要合并,而不是单个项目;并且数组之间有一个完全相同的公共元素。

以下是其他问题:

  1. 合并两个匹配 id 的数组
  2. JavaScript 按 id 合并对象

这是我的代码(来自上面列出的第一个问题提供的最后一个答案)(但显然是错误的):

let arr1 = [
            { route: 'x1' },
            { route: 'x2' },
            { route: 'x3' },
            { route: 'x4' },
            { route: 'x5' }
        ]


        let arr2 = [
            { pattern: 'y1', route: 'x1' },
            { pattern: 'y2', route: 'x1' },
            { pattern: 'y3', route: 'x2' },
            { pattern: 'y4', route: 'x2' },
            { pattern: 'y5', route: 'x3' },
            { pattern: 'y6', route: 'x3' },
            { pattern: 'y7', route: 'x4' },
            { pattern: 'y8', route: 'x4' },
            { pattern: 'y9', route: 'x5' },
            { pattern: 'y10', route: 'x5' }
        ]

        let finalArray2 = [];
        arr2.forEach(member => {
            finalArray2.push(Object.assign({}, member,
                { route: arr1.find(m => m.route === member.route).route }
            ))
        });

        console.log(finalArray2);

我确实需要如下所示的结果:

let arr3 = [
    { route: 'x1', pattern: ['y1','y2'] },
    { route: 'x2', pattern: ['y3','y4'] },
    { route: 'x3', pattern: ['y5','y6'] },
    { route: 'x4', pattern: ['y7','y8'] },
    { route: 'x5', pattern: ['y9','y10'] }
]

这样它就可以呈现在如下表中:

<style type="text/css">
.tg  {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg .tg-yw4l{vertical-align:top}
</style>
<table class="tg">
  <tr>
    <th class="tg-yw4l">ROUTE</th>
    <th class="tg-yw4l">PATTERN(s)</th>
  </tr>
  <tr>
    <td class="tg-yw4l">x1</td>
    <td class="tg-yw4l">y1, y2</td>
  </tr>
  <tr>
    <td class="tg-yw4l">x2</td>
    <td class="tg-yw4l">y3, y4</td>
  </tr>
  <tr>
    <td class="tg-yw4l">x3</td>
    <td class="tg-yw4l">y5, y6</td>
  </tr>
  <tr>
    <td class="tg-yw4l">x4</td>
    <td class="tg-yw4l">y7, y8</td>
  </tr>
  <tr>
    <td class="tg-yw4l">x5</td>
    <td class="tg-yw4l">y9, y10</td>
  </tr>
</table>

你可以采取Map用于保留对目标对象的引用。

var array1 = [{ route: 'x1' }, { route: 'x2' }, { route: 'x3' }, { route: 'x4' }, { route: 'x5' }],
    array2 = [{ pattern: 'y1', route: 'x1' }, { pattern: 'y2', route: 'x1' }, { pattern: 'y3', route: 'x2' }, { pattern: 'y4', route: 'x2' }, { pattern: 'y5', route: 'x3' }, { pattern: 'y6', route: 'x3' }, { pattern: 'y7', route: 'x4' }, { pattern: 'y8', route: 'x4' }, { pattern: 'y9', route: 'x5' }, { pattern: 'y10', route: 'x5' }],
    routes = new Map,
    result = array1.map(o => (routes.set(o.route, {}), Object.assign(routes.get(o.route), o, { pattern: [] })));

array2.forEach(o => routes.get(o.route).pattern.push(o.pattern));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合并具有公共元素和多个数据点的数组 的相关文章

  • 使用 AppleScript 单击 safari 网页按钮

    我想弄清楚如何单击网页中的按钮 例如 点击谷歌网页中的 手气不错 按钮 这是我尝试过的 tell application Safari make new document with properties URL https www goog
  • jquery(或纯js)模拟按下回车键进行测试

    模拟用户按 enter 键的最佳方法是什么 element keypress 似乎不允许我传递按下的实际键 这是用于单元测试的 演示在这里 http jsfiddle net 3xTM2 var e jQuery Event keypres
  • 如何禁用WebStorms未使用的功能颜色功能?

    我想知道是否有人知道如何禁用 WebStorm 中的功能 如果您创建一个函数但尚未调用它 颜色将保持绿色而不是灰色 我进入首选项区域并将全局函数颜色更改为绿色 但只有当我调用它们时它们才会变成绿色 对于任何未调用的函数将保持灰色 转到文件
  • 在 Bash 中将命令的输出读取到数组中

    我需要将脚本中命令的输出读取到数组中 该命令例如是 ps aux grep grep x 它逐行给出输出 如下所示 10 20 30 我需要将命令输出中的值读入一个数组 然后如果数组的大小小于三 我将做一些工作 如果命令的输出包含空格 相当
  • Scrapy Splash,如何处理onclick?

    我正在尝试抓取以下内容 我能够收到响应 但我不知道如何访问以下项目的内部数据以抓取它 我注意到访问这些项目实际上是由 JavaScript 和分页处理的 这种情况我该怎么办 下面是我的代码 import scrapy from scrapy
  • Razorpay 支付集成 -> 我如何检测关闭按钮 X 附近的 razorpay 模型

    我在 CI 框架中使用 Razorpay 当用户在没有付款的情况下关闭时 创建 razor 支付模型 然后对于取消订单 我希望通过状态更改为已取消来触发查询 那么我怎样才能检测到这一点 我已经在使用 by click jQuery 点击关闭
  • VueJS - 验证表单文件上传中的文件大小要求

    我正在使用 Bootstrap Vue 表单制作一个简单的表单 用户可以在其中上传文件 有没有办法验证使用 Vue 表单选择的文件的大小 我想阻止用户上传此类文件 我见过this https stackoverflow com questi
  • 使用 javascript 将文本附加到文本区域

    如何将文本列表附加到文本区域
  • 在全局范围内查找 JavaScript 函数

    有没有办法在当前活动的对象模型中搜索 JavaScript 属性 例如命名函数 Firebug 在 DOM 选项卡上显示的内容 我在 Chrome 开发人员工具中找不到直接等效项 加载页面 使用主要浏览器的通用开发人员工具 一个例子是 我搜
  • tinyMCE - 将RemoveFormat限制为格式列表

    当前的tinyMCE版本 3 5 2 Hi 我正在开发一个自定义插件 可以添加和删除自定义格式 http www tinymce com tryit custom formats php 向当前选择添加格式很简单 但我做不到 找到删除多种格
  • Javascript 将即时生成的 BLOB 文件下载到特定文件夹中

    所以我正在尝试编写一个 Firefox Webextension 我想将网页的标题 网址和个人评论保存到文件中 myfile txt 这就是我得出的结论 我不希望我的 下载 文件夹很快变满 因此我想将它们下载到 下载 文件夹中包含的文件夹中
  • 在 MongoDB 中对 Null 值进行最后排序

    我使用以下查询根据名为 sortIndex 的字段按升序填充 MongoDB 中的项目 有时 数据库中的项目没有 sortIndex 字段 通过以下查询 具有 null sortIndex 的项目显示在顶部 我想知道如何让它们显示在底部 我
  • chrome.extension.getBackgroundPage() 函数示例

    我正在开发一个需要在后台运行的小型 Chrome 扩展 但是 我知道当我使用弹出窗口时这是不可能的 经过一番阅读后 似乎最好的选择是创建popup js为了运行background js using chrome extension get
  • 设置 D3 力定向图

    致尊敬的读者 我对 javascript 相当陌生 我也遇到过这个问题 我正在尝试实现这个力导向图的修改版本 http mbostock github com d3 ex force html http mbostock github co
  • Javascript TypeError:无法读取未定义的属性“indexOf”

    在此代码中 我想从cart products array var cart products 17 1 19 1 18 1 var product 17 each cart products function key item if ite
  • Excel VBA 循环遍历 10,000 组行,每组包含 20 行

    如何将当前按行循环的 Excel VBA 代码转换为循环 20 行集 据我了解 Step函数可能与以下行一起使用 Range V1 Value Application Index vInput1 r 0 但是 我不确定如何修改代码以循环遍历
  • 当我在 PHP 中将 print_r() 应用于数组时,为什么会得到“Resource id #4”? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • C# 多维数组解析

    我有一个多维数组 内容在调试器中看起来像这样 数组设置为 String s new String 6 4 A B Yes C A B Yes C A B No C A B Yes C A B Yes C A B Yes C A B No C
  • ng-show 令人不安的 div 布局 - angularJS

    我在用ng show notesOpened 如果notesOpened 变量为true 则隐藏div 然而 当隐藏时 它会扰乱布局 有没有办法让 ng show 的行为与 css 属性相同visibility hidden 以便被隐藏的
  • React 不适用于 Android 4.4.2 Web 视图浏览器

    React 在我的 Android 手机上不起作用 我不认为这是我的代码错误 因为即使我写的唯一内容是 p hello world p 它仍然没有显示 在 chrome 远程吊顶上查看后 这显示了 Map is not defined 以前

随机推荐

  • 如何查找 SQL Server 2005 的服务器名称

    我已经在我的系统上安装了 SQL Server 2005 安装后 当我尝试使用它时 它要求输入服务器名称 我努力了 SQLEXPRESS local local localhost localhost localhost computern
  • 如何在Excel中编辑通过宏代码显示的单元格中的信息?

    我有一个宏 这样当您突出显示sheet1上的一行时 该宏就会获取该行中的所有信息 并将其单独显示在sheet2上 如果突出显示sheet1上的不同行 sheet2上的信息将更改以显示该行的信息 我的问题是 如果我更改sheet2上显示的信息
  • Android gradle 3.0.0 - ZLIB 输入流意外结束

    将 android studio 更新到 3 0 并切换到gradle plugin 3 0 0我收到此错误 Gradle project refresh failed Error Unexpected end of ZLIB input
  • 张量流中的加权成本函数

    我试图将权重引入以下成本函数 cost tf reduce mean tf nn sparse softmax cross entropy with logits logits logits labels y 但不必自己做 softmax
  • fork()在for循环中执行

    int main int argc char argv int i 0 while i lt 2 fork system ps o pid ppid comm stat i return EXIT SUCCESS 谁能告诉我 ps 命令执行
  • Visual Studio 2012 上的 mySQL 数据源

    我一直在阅读有关 mySQL 数据源以及将 mySQL 与实体框架结合使用的能力 但如果不使用数据源对话框 我无法真正使用 mySQL 生成 EF 如何将 mySQL 数据库添加到此类对话框 这是我到目前为止所做的 已安装mySQL 连接器
  • 用于传递块的 Ruby 语法 [重复]

    这个问题在这里已经有答案了 为什么带大括号的语法按预期工作 class SomeClass include Parser Http new agent PASSED This block was passed to Http new end
  • 如何使用mockito verify()验证一个方法被调用两次

    我想通过mockito verify验证一个方法是否至少被调用一次 我使用了验证 它抱怨如下 org mockito exceptions verification TooManyActualInvocations Wanted 1 tim
  • 如何测试 IPC::Run3 的退出状态

    我正在尝试测试 Perl 模块 IPC Run3 但难以检查命令是否失败或成功 我知道如果 IPC Run3 的参数有问题 它会发出退出代码 但是如果参数没问题但命令不存在怎么办 我如何测试以下示例 有一个子程序来调用 Run3 sub r
  • 转换为 PHP REST CURL POST

    我们如何将此代码转换为 PHP REST CURL POST POST https apis live net v5 0 me skydrive files access token ACCESS TOKEN Content Type mu
  • 如何在 mac os x 10.7.2 Lion 上安装 PIL

    我尝试过谷歌搜索并查找其他人的问题 但是 我仍然找不到在 mac os x 10 7 2 Lion 上安装 PIL 适用于 python 2 6 或 2 7 的清晰 简单的方法 如果你使用homebrew 您只需安装 PILbrew ins
  • gnuplot 条形图上的 Y 值?

    我可以让 gnuplot 在其条形上显示数据点的精确 y 值或高度 使用 带框 绘制 吗 我希望该图易于阅读 这样就无需将条形顶部与 y 轴对齐并猜测该值是多少 您可以使用标签样式并将其与框样式结合到绘图命令中 标签样式需要 3 列数据 x
  • Oracle 中的 DATEDIFF 函数 [重复]

    这个问题在这里已经有答案了 我需要使用 Oracle 但 DATEDIFF 函数在 Oracle DB 中不起作用 在Oracle中如何编写以下代码 我看到一些使用 INTERVAL 或 TRUNC 的示例 SELECT DATEDIFF
  • 如何在张量流中使用预训练模型作为不可训练子网络?

    我想训练一个包含子网络的网络 我需要在训练期间保持修复 基本思想是在预训练网络 inceptionV3 中添加一些层 new layers gt pre trained and fixed sub net inceptionv3 gt ne
  • 根据第二个数组过滤 numpy 数组中的行

    我有 2 个 2d numpy 数组 A 和 B 我想删除 A 中出现在 B 中的所有行 我尝试过这样的事情 A np isin A B 但 isin 保留 A 的维度 我需要每行一个布尔值来过滤它 编辑 像这样的东西 A np array
  • Vue 模板或渲染函数尚未定义,我两者都没有使用?

    这是我的主要 JavaScript 文件 import Vue from vue new Vue el app 我的 HTML 文件 div div 使用运行时构建的 Vue js 的 Webpack 配置 alias vue vue di
  • 通过计时器在 JDialog 中设置动态 JLabel 文本

    我正在尝试制作一个 JDialog 它将在 JLabel 上向用户显示动态消息 该消息应该是从 1 到 10 的计数 并且应该每秒更改一个数字 问题是 当我调试它时 它在 dia setVisible true 之后立即停止 除非我关闭 J
  • 在 R 中提取日期

    我在 R 中处理日期方面遇到了很大的困难 而在 SPSS 中可以很轻松地做到这一点 但我很乐意留在 R 中完成我的项目 我的数据框中有一个日期列 想要完全删除年份以保留月份和日期 这是我的原始数据的峰值 gt head ds date 1
  • 在不改变宽度的情况下减少条之间的间距

    我正在创建一个像这样的条形图 gender M F numbers males females bars plt bar gender numbers width 0 1 bottom None align center data None
  • 合并具有公共元素和多个数据点的数组

    我正在尝试使用直接的 Javascript 将两个 Javascript 数组合并为一个数组 我正在努力准确地完成以下两个问题中所提出的问题 然而 我的数据有几个点需要合并 而不是单个项目 并且数组之间有一个完全相同的公共元素 以下是其他问