如何从复杂的对象数组中获取唯一的对象数组?

2024-06-24

如何从字段上的输入 JSON 数组中获取唯一值input[i].user

我可以编写一个 for 循环,但想知道是否有更短的方法使用过滤器/设置等?谢谢

const input = [{
  "id": 133557,
  "user": "bcasey1",
  "userfullname": "Bertha Casey",
  "commentTypeId": 2,
  "annotationPrimaryId": 141614,
  "comment": "Red color on ravioli is not true, fix",
  "deleted": false,
  "historyno": "133557-0",
  "timestamp": "Tue Apr 24 10:40:42 CDT 2018",
  "type": "rectangle"
}, {
  "id": 134038,
  "user": "admin",
  "userfullname": "Administrator Administrator",
  "commentTypeId": 1,
  "annotationPrimaryId": 142286,
  "comment": "test123",
  "deleted": false,
  "historyno": "134038-0",
  "timestamp": "Mon Jul 8 22:15:18 CDT 2019",
  "type": "rectangle"
}, {
  "id": 134039,
  "user": "admin",
  "userfullname": "Administrator Administrator",
  "commentTypeId": 2,
  "annotationPrimaryId": 142287,
  "comment": "test234",
  "deleted": false,
  "historyno": "134039-0",
  "timestamp": "Mon Jul 8 22:15:35 CDT 2019",
  "type": "rectangle"
}, {
  "id": 134112,
  "user": "admin",
  "userfullname": "Administrator Administrator",
  "commentTypeId": 3,
  "annotationPrimaryId": 142361,
  "comment": "sadasdasd",
  "deleted": false,
  "historyno": "134112-0",
  "timestamp": "Wed Jul 17 13:03:55 CDT 2019",
  "type": "rectangle"
}, {
  "id": 134112,
  "user": "admin",
  "userfullname": "Administrator Administrator",
  "commentTypeId": 0,
  "annotationPrimaryId": 142370,
  "comment": "sadasdasd s",
  "deleted": false,
  "historyno": "134112-1",
  "timestamp": "Wed Jul 17 15:09:48 CDT 2019",
  "type": "rectangle"
}, {
  "id": 134113,
  "user": "admin",
  "userfullname": "Administrator Administrator",
  "commentTypeId": 4,
  "annotationPrimaryId": 142362,
  "comment": "sadasdasd edited #4",
  "deleted": false,
  "historyno": "134113-0",
  "timestamp": "Wed Jul 17 13:16:39 CDT 2019",
  "type": "rectangle"
}, {
  "id": 134114,
  "user": "admin",
  "userfullname": "Administrator Administrator",
  "commentTypeId": 0,
  "annotationPrimaryId": 142363,
  "comment": "sadasdasd edited #5",
  "deleted": false,
  "historyno": "134114-0",
  "timestamp": "Wed Jul 17 13:20:06 CDT 2019",
  "type": "rectangle"
}, {
  "id": 134114,
  "user": "admin",
  "userfullname": "Administrator Administrator",
  "commentTypeId": 0,
  "annotationPrimaryId": 142365,
  "comment": "sadasdasd edited #6",
  "deleted": false,
  "historyno": "134114-1",
  "timestamp": "Wed Jul 17 13:36:53 CDT 2019",
  "type": "rectangle"
}, {
  "id": 134114,
  "user": "admin",
  "userfullname": "Administrator Administrator",
  "commentTypeId": 0,
  "annotationPrimaryId": 142366,
  "comment": "sadasdasd edited #7",
  "deleted": false,
  "historyno": "134114-2",
  "timestamp": "Wed Jul 17 13:46:36 CDT 2019",
  "type": "rectangle"
}, {
  "id": 134115,
  "user": "admin",
  "userfullname": "Administrator Administrator",
  "commentTypeId": 2,
  "annotationPrimaryId": 142367,
  "comment": "eertet",
  "deleted": false,
  "historyno": "134115-0",
  "timestamp": "Wed Jul 17 14:50:03 CDT 2019",
  "type": "rectangle"
}, {
  "id": 134118,
  "user": "admin",
  "userfullname": "Administrator Administrator",
  "commentTypeId": 3,
  "annotationPrimaryId": 142371,
  "comment": "a",
  "deleted": false,
  "historyno": "134118-0",
  "timestamp": "Wed Jul 17 15:09:58 CDT 2019",
  "type": "rectangle"
}];

const expectedOutput = [{
  "user": "bcasey1",
  "userfullname": "Bertha Casey"
}, {
  "user": "admin",
  "userfullname": "Administrator Administrator",
}];

console.log('expectedOutput', expectedOutput);

Using reduce() and Object.assign()

const input = [{"id":133557,"user":"bcasey1","userfullname":"Bertha Casey","commentTypeId":2,"annotationPrimaryId":141614,"comment":"Red color on ravioli is not true, fix","deleted":false,"historyno":"133557-0","timestamp":"Tue Apr 24 10:40:42 CDT 2018","type":"rectangle"},{"id":134038,"user":"admin","userfullname":"Administrator Administrator","commentTypeId":1,"annotationPrimaryId":142286,"comment":"test123","deleted":false,"historyno":"134038-0","timestamp":"Mon Jul 8 22:15:18 CDT 2019","type":"rectangle"},{"id":134039,"user":"admin","userfullname":"Administrator Administrator","commentTypeId":2,"annotationPrimaryId":142287,"comment":"test234","deleted":false,"historyno":"134039-0","timestamp":"Mon Jul 8 22:15:35 CDT 2019","type":"rectangle"},{"id":134112,"user":"admin","userfullname":"Administrator Administrator","commentTypeId":3,"annotationPrimaryId":142361,"comment":"sadasdasd","deleted":false,"historyno":"134112-0","timestamp":"Wed Jul 17 13:03:55 CDT 2019","type":"rectangle"},{"id":134112,"user":"admin","userfullname":"Administrator Administrator","commentTypeId":0,"annotationPrimaryId":142370,"comment":"sadasdasd s","deleted":false,"historyno":"134112-1","timestamp":"Wed Jul 17 15:09:48 CDT 2019","type":"rectangle"},{"id":134113,"user":"admin","userfullname":"Administrator Administrator","commentTypeId":4,"annotationPrimaryId":142362,"comment":"sadasdasd edited #4","deleted":false,"historyno":"134113-0","timestamp":"Wed Jul 17 13:16:39 CDT 2019","type":"rectangle"},{"id":134114,"user":"admin","userfullname":"Administrator Administrator","commentTypeId":0,"annotationPrimaryId":142363,"comment":"sadasdasd edited #5","deleted":false,"historyno":"134114-0","timestamp":"Wed Jul 17 13:20:06 CDT 2019","type":"rectangle"},{"id":134114,"user":"admin","userfullname":"Administrator Administrator","commentTypeId":0,"annotationPrimaryId":142365,"comment":"sadasdasd edited #6","deleted":false,"historyno":"134114-1","timestamp":"Wed Jul 17 13:36:53 CDT 2019","type":"rectangle"},{"id":134114,"user":"admin","userfullname":"Administrator Administrator","commentTypeId":0,"annotationPrimaryId":142366,"comment":"sadasdasd edited #7","deleted":false,"historyno":"134114-2","timestamp":"Wed Jul 17 13:46:36 CDT 2019","type":"rectangle"},{"id":134115,"user":"admin","userfullname":"Administrator Administrator","commentTypeId":2,"annotationPrimaryId":142367,"comment":"eertet","deleted":false,"historyno":"134115-0","timestamp":"Wed Jul 17 14:50:03 CDT 2019","type":"rectangle"},{"id":134118,"user":"admin","userfullname":"Administrator Administrator","commentTypeId":3,"annotationPrimaryId":142371,"comment":"a","deleted":false,"historyno":"134118-0","timestamp":"Wed Jul 17 15:09:58 CDT 2019","type":"rectangle"}];

const expectedOutput = input.reduce((a, o) => Object.assign(a, {
  [o.user]: {
    user: o.user,
    userfullname: o.userfullname
  }
}), {});

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

如何从复杂的对象数组中获取唯一的对象数组? 的相关文章

  • 如何动态地从对象中提取所有元素

    如何从对象中提取特定列 我有一个列数组 我希望从对象中提取这些字段 该对象将由作为项目的映射循环函数构造 现在在这里 如何动态检查我的字段 我不想要这样的 item col 0 请告诉我一个捷径 const person firstName
  • 在 AngularJS 和 Nodejs 之间共享代码

    使用在前端和后端之间共享代码的最佳方式是什么javascript 特别是说之间nodejs and angularjs 问题是我们使用的是相同的enums and constant values例如error codes在后端和前端 现在
  • 在一定时间后自动更改 Firestore 中的字段值 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I m working on Javascript and here s how s my data looks like 我想要的功
  • 工厂函数方法不更新变量

    我正在尝试设置一个工厂函数 该函数将更新所述工厂函数中特定变量的值 这看起来实现起来很简单 但是 每当我测试它时 我都会得到变量的原始设置值 而不是更新后的值 我确信在范围界定方面我缺少一些细微差别 但这里到底发生了什么 const fac
  • 范围滑块 javascript 以小时和分钟为单位

    我试图分别以小时和分钟为单位显示滑块的值 我对 JS 还很陌生 并且仍在尝试了解它是如何工作的 到目前为止 我所拥有的是一个工作滑块 其最大值为 1440 24 小时内的分钟 在 JS 中 我尝试将其划分为小时和分钟 并使用 innerHt
  • 无法加载资源:服务器在已部署的 React.js 项目中响应状态为 404(未找到)

    当我将 React 项目部署到 Surge 中时 构建成功并且可以获取应用程序 URL 但是当我链接到 URL 时 我可以在检查控制台中看到一个空白页面和一些错误 Failed to load resource the server res
  • 请使用同一按钮播放和暂停音频

    我有这段代码并且只是播放 但我想使用相同的按钮 图像 播放和暂停 并且我不知道我需要添加什么 我需要做什么 请帮帮我
  • iPhone Web 应用程序禁用缓存

    我使用 PHP 构建了一个 iPhone 网络应用程序 主 也是唯一 页面包括苹果移动网络应用程序支持 and 苹果触摸全屏元标记 以便在添加到主屏幕后可以全屏运行 然而 似乎每次我从主屏幕启动应用程序时 都会使用页面的缓存版本而不是刷新页
  • JavaScript - babel-preset-env 不为 IE11 转换箭头函数

    我很难尝试配置 Babel 来转译 IE11 可以理解的代码 特别是箭头函数 跑步npx webpack mode development使用我的配置不会转换我的代码中的箭头函数 在eval 在生成的代码中的语句中 我可以看到所有实例都未转
  • Google 闭包编译器使用 WebStorm

    我喜欢用谷歌闭包编译器 https developers google com closure compiler in WebStorm https www jetbrains com webstorm 我已经通过 npm 下载了它 npm
  • pointdown 与 onclick:有什么区别?

    两者有什么区别onpointerdown and onclick事件处理程序 有任何实际差异吗 事件在 DOM 树上传播的方式不一样吗 是否有一些设备仅响应这些事件之一 我最初以为这只是pointerdown在触摸设备或笔中触发 但是onc
  • Django 管理中的自定义依赖下拉菜单

    我有一个按阶段模型的项目外键 我很难在 Django 管理页面中创建依赖的下拉列表 我想当用户从该项目的 项目下拉 阶段选择一个项目时 在第二个下拉菜单中显示 实现这一目标的最佳方法是什么 如果下拉列表根据其父级的值来过滤项目 那就太好了
  • td 内的文本可以随 td 一起调整大小吗? (是其高度的百分比?)

    我有一个 100 占屏幕的表格 里面有 3x3 9 个单元格 每个单元格占 33 到目前为止 一切都很好 这是一个干净 可扩展的井字棋游戏 问题在于 TD 内的文本不会随比例缩放 有没有办法说 我希望文本大小为 TD 高度的 30 或者其他
  • Firebase 停止监听 onAuthStateChanged

    从版本 3 0 0 开始 我很难删除身份验证状态更改侦听器 要根据文档启动侦听器 firebase auth onAuthStateChanged function user handle it 但是 我在文档中找不到任何涉及删除身份验证状
  • 纯 JavaScript 工具提示

    我正在尝试用纯 JavaScript 制作一个工具提示 显示在hover 就像 Stack Overflow 中将鼠标悬停在个人资料名称 a 上一样div显示 我尝试使用onmouseover onmouseout并添加了setTimeou
  • Python 中 Javascript 的 reduce()、map() 和 filter() 的等价物是什么?

    Python 的等价物是什么 Javascript function wordParts currentPart lastPart return currentPart lastPart word Che mis try console l
  • 如何在从数据库异步加载中用占位符替换不存在的图像

    我有一个包含图像的数据库 我需要根据用户的请求即时加载这些图像 这些图像将作为包含 div 容器中的单独 s 的背景图像 类似于图像滚动条 该数据库当前是本地数据库 但这不是我的问题 问题是数据库可能没有我请求的所有图像 并且我可能会得到一
  • ag-Grid 中的行格式

    我们需要有条件地将行文本设置为粗体 目前它仅适用于单个单元格 但我们需要在所有列单元格上应用文本粗体 应用格式设置后 isBold 列必须隐藏 删除 此列仅用于格式化 如何应用文本缩进 10px isBold 列包含真实值的第一列的 有可能
  • 删除移动设备上的 adsense

    我正在研究响应式设计 但在使用 adsense 时遇到了问题 我有一个广告应该显示在桌面设计上 但不能显示在移动设计上 因此 只有在桌面上查看网站时 才应将广告代码放置在 html 中 css 可以使用 display none 但这违反了
  • 将画布下载为 PNG 图像[重复]

    这个问题在这里已经有答案了 当我尝试将画布下载为 PNG 图像时 浏览器会在新页面中打开该图像 但不下载它 我的下载代码 btnScaricaEtichetta click function console log Download loc

随机推荐