使用 JavaScript 将对象的特定属性合并在一起

2024-03-03

所以我有一个像这样的对象数组:

[
  {
    name: "Joe Smith",
    job: "Custodian",
    age: 35,
    id: "3421"
  },
  {
    name: "George Henderson",
    job: "CEO",
    age: 43,
    id: "5098"
  },
  {
    name: "Joe Smith",
    job: "Chef",
    age: 35,
    id: "3421"
  },
  {
    name: "Sam Doe",
    job: "Technician",
    age: 22,
    id: "1538"
  },
  {
    name: "Joe Smith",
    job: "Pilot",
    age: 35,
    id: "3421"
  } 
]

正如您所看到的,乔·史密斯有三份工作。我想做的是将他的所有工作合并到一个对象中,如下所示:

{
   name: "Joe Smith",
   job: "Custodian, Chef, Pilot",
   age: 35,
   id: "3421"
}

我希望能够对任何身兼数职的人做到这一点。此外,可能有多个同名的人,因此最好通过 ID 而不是姓名来识别人员。

我该怎么做呢?如果使用像 Lodash 这样的库可以简化代码,那就太好了,但我想不出比迭代数组更简单的方法,但这可能会变得复杂。

Thanks!


通过使用reduce迭代数组以构建一个新对象,只需检查 id 是否已插入,然后连接作业,否则插入新对象:

const arr = [
  { name: "Joe Smith", job: "Janitor", age: 35, id: "3421" },
  { name: "George Henderson", job: "CEO", age: 43, id: "5098" },
  { name: "Joe Smith", job: "Cook", age: 35, id: "3421" },
  { name: "Sam Doe", job: "Technician", age: 22, id: "1538" },
  { name: "Joe Smith", job: "Dishwasher", age: 35, id: "3421" } 
]

const result = arr.reduce((acc, cur) => {
    const duplicate = acc.find(e => e.id == cur.id)
    
    if (duplicate) {
	duplicate.job += ', ' + cur.job
    } else {
	acc.push(cur)
    }

    return acc
}, [])

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

使用 JavaScript 将对象的特定属性合并在一起 的相关文章

  • 如何检测被覆盖的 CSS 属性?

    I can get all css properties for an element with document stylesheets but some of those are not active because those pro
  • javascript:全局变量泄漏

    每当我向 Firefox 提交插件时 我都会收到一封电子邮件 告诉我我的一些变量正在泄漏到全局范围内 一旦他们告诉我我解决了问题 但在那之前有什么方法 程序 来检查变量是否泄漏到全局范围内 Thanks Both JSLint http w
  • 如何检查是否存在可能的路径?

    我正在开发一个基于 javascript 的实验性游戏 玩家必须在二维平铺地图上移动才能退出 请随意检查这个小提琴并演奏 http jsfiddle net moonlife 74vLd 我只是随机放置障碍物 但有时障碍物会挡住玩家和出口之
  • React中如何触发同级组件的函数?

    I am new to front end world and could not figure out how to trigger a function from a sibling component Lets say I have
  • 转义 \u200b(零宽度空格)和其他非法 JavaScript 字符

    我有一组 JavaScript 对象 我引导到后端模板 以在页面加载时初始化我的 Backbone js 集合 它看起来像这样 作为 Twig 模板 我遇到的问题是某些文本字段包含 u200b 零宽度空格 这会破坏
  • 自调用函数未定义

    如果我声明一个函数文字 var x function alert hi console log x returns the function code However var x function alert hi console log
  • 为什么函数声明在不同浏览器中的处理方式不同?

    虽然我在谷歌中找不到对此的引用 但我熟悉这样一个事实 在 javascript 中 全局函数声明在执行任何代码之前都会被解释 换句话说 这工作得很好 f function f 但是 我注意到 chrome 和 firefox 对全局函数声明
  • Javascript:我应该隐藏我的实现吗?

    作为一名 C 程序员 我有一个习惯 将可以而且应该私有的东西设为私有 当 JS 类型向我公开其所有私有部分时 我总是有一种奇怪的感觉 而且这种感觉并没有被 唤起 假设我有一个类型draw方法 内部调用drawBackground and d
  • Next.js:错误:React.Children.only 期望接收单个 React 元素子元素

    我有一个名为Nav inside components目录及其代码如下所示 import Link from next link const Nav gt return div a Home a a About a div export d
  • 嵌套 DIV 的类似斑马的 CSS 样式

    我嵌套了 DIV 元素 但我不知道嵌套的级别 我需要每个都有与其父级不同的背景 创建类似斑马的颜色 我只使用两种背景 深色和白色 效果需要类似于在容器中设置奇数和偶数子级的样式 但在我的例子中 子级是嵌套的 我可以使用每个嵌套元素的规则来做
  • D3 向对象添加超链接?

    我正在尝试制作 D3 图 它将代表我网站的菜单 我尝试按照此处的其他指南添加超链接 但它们都不起作用 每个对象都会有一个不同的 URL 指向 主页 关于 联系方式等 如果添加超链接 我可以拖动对象吗 这意味着如果我按住单击 如果我单击该对象
  • 如何使用 GreaseMonkey 让浏览器恢复“/”键?

    Lots of web pages seem to use the key for searching I d like to disable that because 100 of the time I want to use to se
  • jQuery 中什么函数相当于 .SelectMany()?

    让我解释一下 我们知道 jQuery 中的映射函数充当 Select 如 LINQ 中 tr map function return this children first returns 20 tds 现在的问题是我们如何在 jQuery
  • Angularjs : $locationProvider.hashPrefix("!") ;

    我想将网址显示为 www test com 因为我正在使用 locationProvider hashPrefix 但它显示网址为 www test com 我想 哈希之前而不是哈希之后 Thanks var app angular mod
  • 使用 ng-if 改变角度方向

    我想通过单击将方向从 rtl 更改为 ltr and in 设置 html
  • 绘制多边形

    我正在使用 Google Maps API V3 根据路径绘制多边形 该路径是随机未排序坐标点 LatLng 的数组 这会产生以下形状 Polylines intersect Problem 由于多边形的形状取决于路径中点的顺序 因此如何对
  • Vue-Router 抽象父路由

    我正在尝试将当前网站迁移到 vuejs 站点地图必须是 login signup password reset browse search dozens of other routes 由于其中一些路线共享大量 fx 因此我将它们设为父路线
  • 使用 File API polyfill 读取数据 URL

    我正在尝试使用文件 API 库 https github com mailru FileAPI https github com mailru FileAPI 作为不支持文件 API 的浏览器的后备 以便将文件作为数据 URL 读取并将其传
  • 如何为 jQuery 插件设置私有变量?

    我想创建一个简单的插件 它使用元素的文本作为默认值 或者您可以在调用插件时设置此值 但是 如果我不设置该值 并为多个元素调用插件 则默认值会成倍增加 function fn reText function options var setti
  • 使圆圈与 d3.js 上的多线匹配相同的颜色过滤?

    我有一个多线图 当按每种水果过滤时会更新 每条线条颜色对应不同的销售年份 在 的帮助下Shashank https stackoverflow com users 5569282 shashank 每个数据点线上的圆圈已添加到组中 而不是直

随机推荐

  • 创建不带输入文本框的复制按钮

    我需要一些 JavaScript 来制作一些文本 以便在您单击按钮时复制您的剪贴板 我已在下面附加了按钮 HTML 注意 我有多个按钮
  • TFS:将一个分支中本地完成的更改提交到另一个分支

    我对很多文件进行了更改 同时我想我宁愿将这些未经测试的代码提交到尚未创建的分支 这样现有代码库的用户就不会受到影响 由于我接触了很多很多文件并创建和添加了新的子项目等 我想避免手动复制文件和文件夹 在 Visual Studio 中完成此操
  • 从命令行调用 python 脚本而不先输入“python”

    问题 在命令行中 如何调用 python 脚本而无需键入python在脚本名称前面 这可能吗 Info 我编写了一个方便的脚本 用于从命令行访问 sqlite 数据库 但我有点不喜欢键入 python SQLsap args 而宁愿只键入
  • 从 RDF 到 html 的 XSLT 转换

    我正在尝试使用 XSLT 将 RDF 文件转换为 HTML 我正在使用我在网上找到的模板 http snippets dzone com posts show 1164 http snippets dzone com posts show
  • 使用 toString 进行 Java 语言设计

    他们决定不实施toString方法用于int 而是让它继承toString方法来自Object 他们确实实施了更合理的toString数组的方法 他们位于java util Arrays http docs oracle com javas
  • 谷歌地图 myoptions 不起作用

    我正在尝试自定义马萨诸塞州地图 以显示 10 个区 我已将链接添加到在 我的地点 中创建的地图 但无法使地图居中 缩放或标题 中心 LatLng 是伍斯特 没有任何效果 帮助 Thanks
  • 如何查看 PHP SOAP 客户端类生成的实际 XML?

    考虑以下 SOAP 客户端脚本示例 SOAP new SoapClient WDSL Create a SOAP Client from a WSDL Build an array of data to send in the reques
  • Ionic 3 Native:文件:{代码:5,消息:“ENCODING_ERR”}

    我正在使用文件 API 插件中的 checkFile 函数 https ionicframework com docs native file checkFile在 Ionic 3 中检查文件是否存在于本地 Promise 被拒绝并出现以下
  • 如何以安全的方式为 HTTPS 配置 OpenSSL?

    每个月 网络上都会有一些文章介绍某些应用程序或平台在 SSL 实施中使用过时的加密配置 这让我担心 我自己的实现怎么样 当我在应用程序中使用 OpenSSL 来提供和 或使用 HTTPS 时 我到底应该做什么才能以最安全的方式配置 Open
  • Heroku 上的 ffmpeg:无法识别的选项“预设”

    我在本地 Rails 应用程序中使用 ffmpeg 版本 1 2 4 来转换视频文件 当我在本地运行应用程序时 一切都按预期工作 当我部署到heroku时 我添加了ffmpeg的构建包 https github com shunjikoni
  • 反序列化 JSON 日期(无时区)

    从昨天开始 我遇到了一个让我头疼的问题 不知道如何处理 我的数据库中有一个日期字段 其中包含以下值 然后我的应用程序获取该值并将其发送到我的网络表单 价值仍然相同 没关系 在客户端 我使用 javascript 警报进行中断 以查看来自 J
  • 从 tkinter 中的文本小部件复制格式化文本

    我正在使用 tkinter 在 Python 中开发 APA 引文制作器 我使用文本小部件在生成引文后显示引文 但每当我复制文本 目前使用 ctrl c 快捷方式 时 它都会丢失其格式 是否有某种方法可以从文本小部件复制格式化文本 例如斜体
  • 在 Gallery 中嵌入 ListView

    目标是实现一个 Gallery 其适配器返回 ListView 换句话说 嵌入水平滚动 Gallery 中的垂直滚动 ListView 经过一些工作后它就可以工作了 但是当尝试水平滚动时 ListView 看起来非常不稳定 就像居中时有一些
  • 更智能的“ff-find-other-file”

    我正在开发一个项目 其中源代码组织在以下目录结构中 source include source include analysis source include tools source include utils source includ
  • 如何在 Google App Engine Java 应用程序的模块之间共享会话?

    当我通过以下方式在会话中存储某些内容时HttpSession在模块A中 HttpSession session req getSession true session setAttribute username Eng Fouad 然后我尝
  • 需要帮助找到正确的 T-SQL 查询

    我不太确定该怎么做 基本上我有一张这样的桌子 UserId DateRequested Approved ApprovedBy Notes 1 2011 05 26 0 NULL NULL 1 2011 05 27 0 NULL NULL
  • 如何使用键绑定使矩形在屏幕上移动?

    我试图创建的游戏是贪吃蛇 到目前为止我已经弄清楚如何使用paint Graphics g 一点JPanel 鼠标侦听器 现在我正在尝试创建一个将在屏幕上移动并使用键绑定或键侦听器的矩形 但我不知道应该如何处理此问题 这是到目前为止我的代码
  • Rust 如何在运行时存储类型?

    A u32占用4字节内存 String在堆栈上占用 3 个指针大小的整数 用于位置 大小和保留空间 再加上堆上的一些数量 对我来说 这意味着 Rust 不知道当代码执行时 什么类型存储在特定位置 因为这些知识需要更多内存 但与此同时 它是否
  • 一类 SVM libSVM

    假设我的特征向量是 x1 x2 xn 谁能给我一个使用 libSVM 训练一类 SVM 的代码 我应该如何使用交叉验证来学习参数 这可能对你有帮助 label ones Number Of your training instances 1
  • 使用 JavaScript 将对象的特定属性合并在一起

    所以我有一个像这样的对象数组 name Joe Smith job Custodian age 35 id 3421 name George Henderson job CEO age 43 id 5098 name Joe Smith j