基于公共id连接两个js对象数组的函数式方法

2024-01-25

我正在尝试实现类似于 SQL 表连接的功能, 以最优雅(功能)的方式,最好使用 underscore.js, 所以请不要使用 for 循环。

我需要合并两个不同数组中的对象,并与一个公共标识符进行匹配。

例如,给定:

var basic = [{
              id: '1',
              name: 'someName',
             }, 
             {...} ]

var ext= [{
              id: '1',
              job: 'someJob',
             }, 
             {...} ]

结果应该是:

var combined = [{
                 id: '1',
                 name: 'someName',
                 job: 'someJob',
                }, 
                {...} ]

Thanks!


Map、findWhere 和extend 应该可以解决问题:

var combined = _.map(basic, function(base){
    return _.extend(base, _.findWhere(ext, { id: base.id} ));
});

Edit:

如果性能是一个问题,请创建扩展值的散列:

var extHash = _.reduce(ext, function(memo, extended, key){
    memo[extended.id] = extended;
    return memo;
}, {});

并像这样使用:

var combined = _.map(basic, function(base){
    return _.extend(base, extHash[base.id]);
});

Fiddle http://jsfiddle.net/GruffBunny/FhjQ5/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于公共id连接两个js对象数组的函数式方法 的相关文章

  • 检测对给定 JavaScript 事件的支持?

    我有兴趣使用 JavaScript hashchange 事件来监视 URL 片段标识符的更改 我知道非常简单的历史 http code google com p reallysimplehistory 以及用于此目的的 jQuery 插件
  • 有没有办法将 Google 文档分割成多个 PDF?

    我想在 Google Scripts VBA 代码中复制我为 Word 文档编写的代码 基本上 它通过搜索我插入文档中的标签 将文档 切片 为多个 PDF 文件 目的是允许合唱团使用 forScore 管理乐谱的应用程序 在切片点插入先前注
  • 通过 Javascript 更改 Webkit 属性?

    请帮助我 可能是因为我对 CSS 动画和 Javascript 相当陌生 但我使用的代码应该更改它的属性 当我运行代码时 它会执行代码中的所有其他操作 除了更改所需 div 的 CSS 属性 我已经尝试了所有这四种方法 但似乎都不起作用 它
  • 如何使用 FS2 中的分类器函数对对象进行分组?

    我有一个无序的流measurements 我想将其分组为固定大小的批次 以便以后可以有效地保留它们 val measurements for id lt Seq foo bar baz value lt 1 to 5 yield id va
  • 从 ES6 模块导入函数表达式或函数声明有什么区别?

    据我了解 参见第 16 3 2 1 节 http exploringjs com es6 ch modules html ES6 允许函数 类导出操作数使用不同的语法 区别在于导出的函数是否需要在导入时解释为函数声明 在这种情况下 您可以编
  • IntSummaryStatistics的summaryStatistics方法

    为什么空 IntStream 上的 summaryStatistics 方法返回整数的最大和最小值作为流中存在的最大和最小 int 值 IntStream intStream IntStream of IntSummaryStatistic
  • 使用淘汰赛动态显示/隐藏元素

    我有一个表 有四列 即代码 名称 数量和价格 其中 我想动态更改数量列的内容 元素 通常 它应该显示其中显示数量的元素 当用户单击元素时 我想显示该元素 以便用户可以编辑数量 我正在尝试按照 示例2 来实现淘汰赛文档链接 http knoc
  • dc lineChart 单击时弹出数据点信息

    我正在尝试检测折线图数据点上的点击 Per this answer dc scatter plot binding onClick event https stackoverflow com a 22772340 1873386 I am
  • 如何检查侧边栏视图是否已经在主干中渲染?

    通常 用户通过主页进入网站 然后我在那里渲染侧边栏视图 接下来 用户单击链接 路由器呈现另一个视图并替换原始内容视图 侧边栏视图不会重新渲染 当用户在子页面上单击刷新时 侧边栏不会呈现 如何检查视图是否存在并且已渲染 划分责任并坚持下去 不
  • Haskell 中的“修复”是什么?为什么“修复错误”会打印无限字符串?为什么“拿 10 美元修复错误”也有同样的作用?

    长话短说 我在看西蒙 佩顿 琼斯的演讲 https www youtube com watch v re96UgMk6GQ 并且当时21 41 https youtu be re96UgMk6GQ t 1301他引用了一句话 我正在解决一个
  • Firefox 上的 jquery 焦点未设置

    我想将焦点设置到我的文本区域 以下是我的代码 this textInput val show focus 但它不起作用 实际上 当我按下鼠标按钮时 它会出现 但是当我松开鼠标时 它会从文本区域中删除 因此 经过大量搜索后 我发现 setTi
  • 如何处理 setTimeout() 的多个实例?

    阻止创建 setTimeout 函数的多个实例 在 JavaScript 中 的最推荐 最佳方法是什么 一个例子 伪代码 function mouseClick moveDiv div 0001 mouseX mouseY function
  • 如何在使用类型分散时将箭头添加到行尾

    如何在 y 不等于 0 且系列类型以线宽 2 分散的情况下正确地将箭头添加到行的每一端 在这里我可以看到箭头已添加但未正确添加 请看这个 部分工作小提琴 http jsfiddle net vnYCX 这是我的 JS 最初的原型是由 sta
  • 如何使用转义的 unicode 解码字符串?

    我不确定这叫什么 所以我在搜索时遇到了麻烦 如何使用 unicode 解码字符串http u00253A u00252F u00252Fexample com to http example com使用 JavaScript 我试过unes
  • Intern JS - 如何在链式 Command 方法中使用 Promise.all()?

    我是用 Intern JS 编写测试的新手 并且一直在遵循他们的文档来使用对象接口 https theintern github io intern interface object and 页面对象 https theintern git
  • 如何获取从 Express (Node.js) 中的表单传递的数据

    我想获取使用表单从页面传递的数据 并在重定向的页面中使用该数据 我的客户端有这个表格
  • Dojo“正在加载”消息

    我是 Dojo 新手 所以我需要一些帮助 我的一些链接需要一段时间 当用户单击时 页面开始加载需要几秒钟 我想添加一条 正在加载 消息 我可以用 旧时尚方式 来做 但我想学习新的 更简单 更智能的 Dojo 方式 具体如何工作现在并不重要
  • 如何在react.js中将/n替换为换行符?

    我正在尝试更换每一个 n to a br tag in ReactJS In my note note对象有一个包含多个的字符串 n in it 示例注释 注释 test ntest ntest 我尝试过的ReactJS note note
  • javascript 闭包和对象引用

    我的情况有点晦涩难懂 主要是因为我认为我已经掌握了闭包 所以基本上我想要的是将集合重置为默认值 假设我有一个集合 它具有带有对象参数数组的构造函数 var c new collection x y z 然后集合定期更新 因为我没有保留数组的
  • 加载谷歌地图控件时是否有事件?

    我知道tilesloaded 但控件似乎在该事件之后加载 我基本上希望能够通过 jQuery 获取控件 但甚至找不到正确的监听 我也刚刚处理了 没有类似的事件 在控件可见之前空闲和tilesloaded触发 因此 基本上将 特殊控制 类添加

随机推荐

  • 在 Numpy / Pandas 中生成所有平行对角线之和的直接方法?

    我有一个矩形 不能假设为正方形 Pandas DataFrame 的数字 假设我选择一个对角线方向 从左上到右下 或 从右上到左下 我想计算一个系列 其条目是原始 DataFrame 沿选定的一组平行对角线的值的总和 要完全指定目标 您需要
  • 如果鼠标在元素内部,则延迟 mouseenter 事件并引发事件

    我使用这个基于 jQuery 开发的选项卡视图 https d2o0t5hpnwv4c1 cloudfront net 001 Tabbed site jQuery html https d2o0t5hpnwv4c1 cloudfront
  • 模拟拖动窗口标题栏的控件

    我已经构建了一个自定义控件 我希望允许人们单击并拖动我的控件 就像在窗口标题栏上拖动一样 做这个的最好方式是什么 到目前为止 我未能成功地利用鼠标向下 向上和移动事件来破译何时需要移动窗口 除了我的其他答案之外 您还可以在控件中手动执行此操
  • 将多个子视图传递给 SwiftUI 中的视图

    我创建了一个 Swift 包 它根据传递给它的内容数组创建多个 PageTabView import SwiftUI public struct WhatsNewView
  • 登录后活动管理员重定向

    当管理员登录时 它会自动重定向到主主页 即不是管理仪表板 我不确定为什么会这样做或如何改变它 路线 rb ActiveAdmin routes self devise for admin user ActiveAdmin Devise co
  • 匹配最长重复序列的正则表达式

    我想匹配至少重复一次的最长序列 Having T send ack new amend pending cancel replace replaced cancel pending cancel replace replaced 结果应该是
  • Sql Server 更改数据捕获:添加列时保留历史记录?

    将新列添加到配置为更改数据捕获 cdc 的表时 捕获实例表不会有新列 直到为源表禁用并重新启用 cdc 在此过程中 现有的捕获实例将被删除 我想我可以将现有数据复制到临时表中 然后使用以下 SQL 复制回来 但是 其他 CDC 元信息 例如
  • 添加 GROUP BY 子句产生的列

    我遇到了这样的情况 使用 GROUP BY 后需要从两行添加列 我的查询如下 select AcctId DC sum TrnAmt from TableId group by AcctId DC order by AcctId DC Re
  • Android动画暂停和播放问题

    我使用以下代码创建了一个动画 private AnimationSet rootSet new AnimationSet true private int xstart 258 private int ystart 146 for k
  • 按名称获取班级

    我可以通过名称获取一个类吗 例如 class Foo class Bar let x Foo classByString x need to return Foo 我想使用元编程来减少代码维护 您可以使用NSClassFromString
  • WPF 控件中的本机 Win32 窗口

    我正在开发一个需要主机本机 Win32 窗口的应用程序 但不知何故我不知道如何做到这一点 我需要创建一个可以在其上显示本机 Win32 控件的 WPF 对话框窗口 该对话框窗口上也将具有 WPF 控件 因此我正在寻找某种可以获取 HWND
  • 使用 Vaadin 登录的 Spring Boot 安全性

    我尝试构建一个基于 Spring Boot 1 2 7 RELEASE 和 Vaadin 7 6 3 的应用程序 我的问题是我无法将 Spring Security 与 Vaadin 集成 我想要一个自定义 Vaadin 构建的 Login
  • ASP.NET Web App 使用错误的 (2.0) CLR 版本(而不是 4.0)

    我刚刚将我一直在开发的 ASP NET Web 应用程序部署到新的开发机器上 这是一个从3 5转换而来的4 0项目 由于某种原因 当我尝试通过默认网站下的 IIS 网站访问该网站时 出现以下错误 无法识别的属性 targetFramewor
  • Python requests & urllib3 Retry - 如何从内部重试循环内部模拟 ConnectionError?

    给出以下示例用法 adapter HTTPAdapter max retries Retry total 5 backoff factor 0 1 status forcelist 429 500 502 503 504 method wh
  • 为什么这个 jQuery .change 事件在 .click 事件之后停止工作

    我有一个脚本 它显示数组中的问题 并使用以下命令从一个问题切换到下一个问题 click两个按钮上的事件 上一个和下一个 当我加载页面时 radio change选择器工作正常 但是当我单击上一个或下一个时 它停止工作 我尝试改变 previ
  • 正则表达式匹配双引号内的每个字符串并包含转义引号

    已经有很多类似的问题了 但没有一个适合我的情况 我有一个字符串 其中包含双引号内的多个子字符串 并且这些子字符串可以包含转义的双引号 例如对于字符串 然后 这是一些带有引号和 转义引号 的示例文本 并不是说我们需要更多 而是 这是 另一个
  • 如何让 Push() 键生成我的 Firebase?

    正如你从照片中看到的 我有一个孩子FreezerItems 在该子项下我还有另外两个子项 它们是 Firebase 使用创建的随机键push 我的问题是 我具体如何获得密钥L8i2M4wNUF5wOojaFE 另外我如何将该密钥放入我的Re
  • 如何在 f# 中执行多行 lambda 表达式?

    我该如何在 F 中执行此操作 C public class MyClass void Render TextWriter textWriter Tag gt textWriter WriteLine line 1 textWriter Wr
  • 无法使用 Visual Studio 2013 运行 Cordova 应用程序

    我已成功安装 多设备混合应用程序 所需的所有第三方设置 但是当我使用 Visual Studio 2013 运行我的应用程序时 出现以下两个错误 Error 1 cmd Command failed with exit code 255 E
  • 基于公共id连接两个js对象数组的函数式方法

    我正在尝试实现类似于 SQL 表连接的功能 以最优雅 功能 的方式 最好使用 underscore js 所以请不要使用 for 循环 我需要合并两个不同数组中的对象 并与一个公共标识符进行匹配 例如 给定 var basic id 1 n