有没有办法在 Javascript 中组合对象

2023-12-04

我正在用 Javascript 进行一些数据清理,我想知道是否有一种方法可以根据通用 ID 组合对象。

鉴于以下情况:

{"subject":"Hadji Singh","predicate":"nameOfUser","id":"3f540200-58b9-40a5-91c2-faafec75216f"}
{"subject":"Race Roger Bannon","predicate":"nameOfUser","id":"41376a49-34ee-4ed8-b5f5-3f8c92b107f8"}
{"subject":"Jessie Bannon","predicate":"nameOfUser","id":"9575cf33-8992-4763-81bb-fc640ffa3545"}
{"subject":"Adventurer","predicate":"departmentOfUser","id":"3f540200-58b9-40a5-91c2-faafec75216f"}
{"subject":"Bodyguard","predicate":"departmentOfUser","id":"41376a49-34ee-4ed8-b5f5-3f8c92b107f8"}
{"subject":"Adventurer","predicate":"departmentOfUser","id":"9575cf33-8992-4763-81bb-fc640ffa3545"}

有没有办法把它变成这样的东西?

[{id:3f540200-58b9-40a5-91c2-faafec75216f, name:Hadji Singh, department:Adventurer},
{id:9575cf33-8992-4763-81bb-fc640ffa3545, name:Jessie Bannon, department:Adventurer},
{id:41376a49-34ee-4ed8-b5f5-3f8c92b107f8, name:Race Bannon, department:Bodyguard}]

我正在考虑两个 for 循环(也许)和很多 if,但也许我缺少某种方式。

我正在使用node.js,如果这意味着什么的话。也许有一个模块可以提供帮助?

Thanks.


Use reduce数组的方法:

let a = [{"subject":"Hadji Singh","predicate":"nameOfUser","id":"3f540200-58b9-40a5-91c2-faafec75216f"},
{"subject":"Race Roger Bannon","predicate":"nameOfUser","id":"41376a49-34ee-4ed8-b5f5-3f8c92b107f8"},
{"subject":"Jessie Bannon","predicate":"nameOfUser","id":"9575cf33-8992-4763-81bb-fc640ffa3545"},
{"subject":"Adventurer","predicate":"departmentOfUser","id":"3f540200-58b9-40a5-91c2-faafec75216f"},
{"subject":"Bodyguard","predicate":"departmentOfUser","id":"41376a49-34ee-4ed8-b5f5-3f8c92b107f8"},
{"subject":"Adventurer","predicate":"departmentOfUser","id":"9575cf33-8992-4763-81bb-fc640ffa3545"}]

let b = a.reduce((acc, val) => {
  let id = val.id
  let idx = acc.findIndex((e) => e.id == id);
  let subj = { id: id }
  let predicate = val['predicate'].split('OfUser')[0]
  subj[predicate] = val['subject']
  if (-1 == idx) {
    acc.push(subj);
  } else {
    acc[idx] = Object.assign(acc[idx], subj);
  }
  return acc
}, [])

console.log(b);

//[ { id: '3f540200-58b9-40a5-91c2-faafec75216f',
//    name: 'Hadji Singh',
//    department: 'Adventurer' },
//  { id: '41376a49-34ee-4ed8-b5f5-3f8c92b107f8',
//    name: 'Race Roger Bannon',
//    department: 'Bodyguard' },
//  { id: '9575cf33-8992-4763-81bb-fc640ffa3545',
//    name: 'Jessie Bannon',
//    department: 'Adventurer' } ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在 Javascript 中组合对象 的相关文章

  • createHTMLNotification() 替换

    我创建了一个 Chrome 扩展程序 其中使用createHTMLNotification 在所有内容之上显示一个窗口 然而 从 Chrome 28 开始 谷歌决定放弃createHTMLNotification 完全 为什么 谷歌 为什么
  • Firebase,只得到新的孩子[重复]

    这个问题在这里已经有答案了 var firebase new Firebase firebaseRef on child added function snapshot 这将接收所有元素 有没有办法在创建新的 Firebase 引用时不接收
  • Vue 3 Composition API 提供/注入在单文件组件中不起作用

    我正在使用 Composition API 在 VueJS 3 中创建一个库 我实现了提供 注入 如中所述docs https v3 vuejs org guide composition api provide inject html i
  • .push() 将多个对象放入 JavaScript 数组中返回“未定义”

    当我将项目添加到beats数组然后console log用户时 我得到了数组中正确的项目数 但是当我检查 length 时 我总是得到 1 尝试调用索引总是会给我 未定义 如下所示 Tom beats 1 我想我错过了一些明显的东西 但这让
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • 如何在网站上使用 svg 元素制作块的屏幕截图?

    我在网站上创建了一个构造函数 其本质是将所选元素及其颜色 svg中的元素 添加到访问者选择的背景和背景颜色 png中的背景 中 然后必须单击 保存 结果 按钮并仅执行工作区的屏幕截图 我写了这个脚本 但它需要屏幕截图 但只有背景 并忽略选定
  • 为什么 setTimeout 在 Chrome 中触发两次,而在 IE 或 Firefox 中则不然?

    有人能告诉我为什么 javascript 函数 生成新号码 在 Chrome 中触发两次 但在 IE 或 Firefox 中则不会 使用 Chrome 20 0 1132 57 IE9 和 Firefox 13
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法
  • JavaScript 中的 Promise 有什么意义?

    一个承诺是一个 可能现在可用 或将来可用 或永远不可用的值 来源 MDN 假设我有一个想要处理图片的应用程序 图片已加载 例如在算法在后台使用它之后 或某种其他类型的延迟 现在我想检查一下图片是否可以在future 通过使用承诺 而不是回调
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐

  • 如何指示应首先编辑变量

    我有以下实时模板 import NAME from PATH END 当它插入编辑器时 输入变量的顺序定义为 import 1 from 2 有什么办法可以改成 import 2 from 1 只需使用编辑变量编辑该实时模板时按钮 然后使用
  • 在 2.2 上获取 ListView 项目的视图/逆序;适用于 4.0.3

    我有一个 ListView 它显示 ArrayAdapter 中的项目 我想在点击视图时为其设置动画 问题是在不同版本的 android 上我得到不同的视图 见下文 我使用此方法从 ListActivity 获取视图 private Vie
  • Java:如何使用UrlConnection发送授权请求?

    我想向需要身份验证的服务器生成 POST 请求 我尝试使用以下方法 private synchronized String CreateNewProductPOST String urlString String encodedString
  • 如何将 KB2670838 包含在 InstallShield 2013 的安装程序中?

    我正在使用 InstallShield 2013 为需要的应用程序制作基本 MSI 安装程序Windows 平台更新 KB2670838 对于 NET 框架和其他要求 我在 Redistributables 部分的 InstallShiel
  • 使用包含竖线的正则表达式匹配字符串

    I have 123 456 789 我只能捕捉 123 使用正则表达式 d 但不确定如何捕获完整的字符串 我对此很陌生 我将感谢任何帮助 d 这应该有效 从竖线开始 重复数字和可选的竖线
  • Graphviz---随机节点顺序和经过标签的边

    我有以下点文件 digraph finite state machine rank same node shape doublecircle q 5 node shape circle q 1 gt q 2 label q 1 gt q 2
  • 无法使用pip安装python包,需要获取Microsoft Visual C++ 14.0

    我正在尝试安装pyjks 我正在管理命令提示符下运行所有 内容 最初尝试安装 pyjks 的结果是 C WINDOWS system32 gt pip install pyjks Collecting pyjks Collecting py
  • 带标题的 PHP Mail() 函数

    当我将 header 与 PHP mail 函数一起使用时 我总是很困难 问题总是一样的 去年 这次 只要我记得 就让我抓狂 问题在于标题仅显示在电子邮件中 收到的邮件示例 Source onderwerp Bedankt voor uw
  • 防止 jQuery Mobile 上的水平滚动

    有没有办法最好仅使用 CSS 来防止移动设备上的水平页面滚动 这是一个例子 http jsfiddle net YfLst 15 Update 以下代码解决了 iOS 上的问题 但 Android 上的问题仍然存在 html body ov
  • 如何在 Eclipse 中以调试模式运行外部工具

    由于各种原因 我的项目只能作为已完成且打包的 JAR 运行 组装时会发生一些神奇的事情 因此我将其作为 Eclipse 中的外部工具运行 我缺少的是调试功能 有没有办法在 Eclipse 中以调试模式运行外部工具 如果远程 JVM 已在调试
  • 记录完成谷歌表单所需的时间

    我正在尝试记录完成并提交 Google 表单所需的总时间 我的逻辑很简单 以下代码将记录时间戳并将其作为多项选择选项 然后 在提交表单后 我们无论如何都会得到一个时间戳 但与此同时 我们也会得到最初记录的时间戳作为该问题的答案 这是我可爱的
  • JSONEncoder 的 dateEncodingStrategy 不起作用

    我正在尝试使用 Swift 4 的 Encodable JSONEncoder 将结构序列化为字符串 该对象可以保存异构值 例如 String Array Date Int 等 除了日期之外 所使用的方法工作正常 JSON编码器的dateE
  • 如何派生具有类型族的记录的实例

    这是我正在尝试但无法编译的内容 LANGUAGE TypeFamilies LANGUAGE StandaloneDeriving LANGUAGE FlexibleInstances import Data Text as T impor
  • URL缩短网站

    我正在开发一个使用 PHP MySQL 和 Apache 的 URL 缩短网站 当我查看开源项目时 URL 缩短的总体思路是 用户提供 URL 链接 系统从数据库获取该链接的 ID 然后转换 ID X 基数系统 我使用的是 36 基数 然后
  • 删除连续的重复单元格

    只是为了澄清 我不想删除重复的行 我想删除行中的重复单元格 这是一个经典的地址表 在某些行中有重复的条目 我需要删除这些条目 我在 VBA 中看到的大部分内容都是用于删除列中的重复值 但我找不到删除行中的重复值的方法 Name Addres
  • 是否有工具/解决方案可以对循环进行编程,其中仅每 X 次迭代检查一次条件?

    例如 我有一个由 while 循环组成的函数 这个函数会检查素数 function isprime int number int i 2 int max int sqrt number 1 while i
  • 将中立者放在一边的李克特图

    我正在使用 Likert 包来创建调查问卷图 我想创建一个像这样的情节 其中中性反应被搁置 你知道在 R 中是否有办法做到这一点 一个如何重现情节的简单例子 lst lt c I dislike them a lot I dislike t
  • 如何将 facebook api 中的日期转换为 android 应用程序日期格式

    我正在开发一个类似于 android facebook 应用程序的应用程序 我从 Facebook 应用程序获得了创建的时间字段 created time 2012 11 28T12 53 40 0000 那么 我怎样才能将其转换为 and
  • C 指针:数组变量

    我在我的书中读到了这一点 以及互联网上的许多来源 数组变量points到数组中的第一个元素 如果为真 则数组变量和第一个元素是不同的 Right 这意味着通过下面的代码 它将产生两种不同的结果 int main char msg stack
  • 有没有办法在 Javascript 中组合对象

    我正在用 Javascript 进行一些数据清理 我想知道是否有一种方法可以根据通用 ID 组合对象 鉴于以下情况 subject Hadji Singh predicate nameOfUser id 3f540200 58b9 40a5