迭代对象的嵌套数组,查找 id 并更新与 id 匹配的对象

2024-03-01

我的输入如下。它是一个对象数组,每个对象都有状态,这也是一个对象数组。我想追加details当状态 id 与状态匹配时,在 states 对象内部id如以下所说的。 IE。82175746

const input = 
[
    {
        "country": { "id": 87745195, "action": "Analyze" },
        "states": [
            { "id": 83589582, "action": "Verify" },
            { "id": 87335656, "action": "Analyze" }
        ]
    },
    {
        "country": { "id": 83861166, "action": "Verify" },
        "states": [
            { "id": 82175746, "action": "Closed" },
            { "id": 78745158, "action": "Closed" }
        ]
    }
]


const details = { "totalOpenRadars": 1, "totalClosedRadars": 1 }

const id = 82175746

这就是我想要达到的结果。请注意,ID 82175746 会与所有州 ID 进行比较。一旦找到匹配项,上述详细信息就会如下所示附加到匹配的对象中。

const result = 
[
    {
        "country": { "id": 87745195, "action": "Analyze" },
        "states": [
            { "id": 83589582, "action": "Verify" },
            { "id": 87335656, "action": "Analyze" }
        ]
    },
    {
        "country": { "id": 83861166, "action": "Verify" },
        "states": [
            { "id": 82175746, "action": "Closed", "details": { "totalOpenRadars": 1, "totalClosedRadars": 1 } },
            { "id": 78745158, "action": "Closed" }
        ]
    }
]

为了实现这一目标,我尝试了这种方法,但无法正确获得结果。 有人可以告诉我哪里出了问题吗

const result  = input.forEach((element) => {
    element.states.forEach((state) => {
        if(state.id === id) {
            state.details = details
        }

    });
});

Array.forEach总是返回undefined, so result一直会undefined。如果你看input操作后,它确实包含您指定的详细信息。

或者,您可以传播input到一个名为的新数组中result并执行你的循环result相反,如果你打算保留input相同。

const input = 
[
    {
        "country": { "id": 87745195, "action": "Analyze" },
        "states": [
            { "id": 83589582, "action": "Verify" },
            { "id": 87335656, "action": "Analyze" }
        ]
    },
    {
        "country": { "id": 83861166, "action": "Verify" },
        "states": [
            { "id": 82175746, "action": "Closed" },
            { "id": 78745158, "action": "Closed" }
        ]
    }
]


const details = { "totalOpenRadars": 1, "totalClosedRadars": 1 }

const id = 82175746

input.forEach((element) => {
    element.states.forEach((state) => {
        if(state.id === id) {
            state.details = details
        }

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

迭代对象的嵌套数组,查找 id 并更新与 id 匹配的对象 的相关文章

  • 使用 useReducers 调度函数发送多个操作?

    使用时是否可以通过调度函数发送多个动作useReducer挂钩反应 我尝试向它传递一组操作 但这会引发未处理的运行时异常 明确地说 通常会有一个初始状态对象和一个减速器 如下所示 const initialState message1 nu
  • 从数组中删除空白元素

    当我从 ruby on Rails 表单中保存多个选择时 它似乎在前面添加了一个空白元素 我该如何删除它 该字段为 selected player utf8 gt authenticity token gt H8W7qPBezubyeU0a
  • 如何防止 Iframe 在与浏览器交互后弄乱浏览器的历史记录?

    因此 就我而言 我使用 Iframe 将 Grafana 附加到我的页面 这为我提供了漂亮且易于使用的图表 可以注意到 每次在图表上进行放大或缩小 使用鼠标单击 交互后 Grafana 的 Iframe 都会在我的 Angular 页面上触
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • Node.js:如何在检索数据(块)时关闭响应/请求

    我正在用 node js 构建一个应用程序 它加载多个页面并分析内容 因为 node js 发送块 所以我可以分析这些块 如果一个块包含例如索引 nofollow 我想关闭该连接并继续其余部分 var host example com to
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • 在 webpack 2.x 中使用 autoprefixer 和 postcss

    如何使用autoprefixer使用 webpack 2 x 以前 它曾经是这样的 module loaders test scss loader style css sass postcss postcss gt return autop
  • Babel 7 Jest Core JS“TypeError:wks不是函数”

    将我的项目升级到 Babel 7 后 通过 Jest 运行测试会抛出以下错误 测试在 Babel 6 中运行没有任何问题 但在 Babel 7 中失败并出现以下错误 TypeError wks is not a function at Ob
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • Grails 在 javascript 内的 GSP 站点中使用 grails var

    我有一个在 GSP 文件中的 javascript 代码中使用 grails 变量值的问题 例如 我有一个会话值session getAttribute selectedValue 我想在 javascript 代码部分使用这个值 我现在的
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • 在 React 中实现 Google 登录错误 -

    我正在尝试在 React 中实现 google 登录 这是我的组件 import Fragment useEffect from react import GOOGLE CLIENT ID from some file const Goog
  • 如何在类似控制台的环境中运行 JavaScript?

    我正在尝试遵循这里的示例 http eloquentjavascript net chapter2 html http eloquentjavascript net chapter2 html and print blah 在浏览器中运行时
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比
  • 在 React.js 中编辑丰富的数据结构

    我正在尝试为数据结构创建一个简单的基于网格的编辑器 但我在使用 React js 时遇到了一些概念问题 他们的文档对此没有太大帮助 所以我希望这里有人可以提供帮助 首先 将状态从外部组件传输到内部组件的正确方法是什么 是否有可能将内部组件中
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • 从字符中获取 KeyCode?

    我需要能够读取字符并获取与其语言和键盘布局相关的键 我知道如何看待文化背景和语言 但是我怎样才能知道像英语中的 S 这样的字母并且知道它在键盘上是什么键呢 或者对于更难的问题 我如何取出字母 并知道它在键盘上的键是什么 用一个示例程序可能比
  • 无法使用 iOS6.1 sdk 构建 Google Maps SDK for IOS 版本 1.7.0

    我刚刚更新到 GMS 版本 1 7 0 无法成功构建基础SDK iOS6 1 我可以使用 Base SDK iOS7 0 成功构建 GMS 版本 1 7 0 我还可以使用 Base SDK iOS6 0 或 7 0 成功构建旧的 GMS 版
  • MongoDb 区域副本集 - 每个区域的主节点?

    给定一个具有区域用户 区域为北美 欧洲 亚洲 的应用程序 如何创建允许 HK 用户写入最近节点的副本集 目标是香港的用户读取和写入其本地节点 而不会遭受写入美国的延迟 我的假设是 我可以在每个区域设置一个应用程序堆栈 通过副本集在所有区域之
  • 两种颜色的背景 - React Native

    有没有办法让背景有两种颜色 如下所示 两种颜色 https i stack imgur com 0DPHC png我尝试过使用线性渐变 但那只是渐变 我不知道如何在主视图标签中放置两种颜色作为背景 有什么建议么 如果视图的尺寸无法帮助您 请
  • go中如何将[][]byte转换为**char

    我想从 go byte 转换为 C char 换句话说 我在 go 中有一个字节矩阵 我想将其转换为 C 中的 char 双指针 请假设我必须有一个 byte 作为输入和一个 char 作为输出 我知道可以通过执行以下操作从 byte 转换
  • Lambda 的结果角色定义中的可信实体是什么?

    下面是 SAM 模板 Resources HelloWorldFunction Type AWS Serverless Function Properties CodeUri hello world Handler app LambdaHa
  • 在 Visual Studio 中哪里可以修改详细的 C# 编译器优化设置?

    在Visual Studio C C 项目中 可以很容易地在 属性页 C C 优化 中修改编译器的优化设置 例如 我们可能会给出不同的优化级别 例如 O2和 O3 以及高级优化 例如 省略帧指针 但是 我无法简单地在 Visual Stud
  • 减去具有不同时间戳的两个文档之间的数字字段

    假设我有这些数据样本 date 2019 06 16 rank 150 name doc 1 date 2019 07 16 rank 100 name doc 1 date 2019 06 16 rank 50 name doc 2 da
  • 为什么我的 KeyPressEvent 不能与右/左/上/下一起使用?

    在 C 中 我试图查看用户是否按下了正确的键 以便玩家向右移动 但是当我尝试时 它没有注册按键 private void KeyPressed object sender KeyPressEventArgs e if e KeyChar C
  • 与其活动相关的片段生命周期

    情况我的活动等待异步操作 在收到异步操作的回复后 它需要将信息传递给其中的 2 个片段 要求1 两个片段都需要它们的onCreateView为加载布局而进行的调用 2 他们需要全身心地投入到自己的活动中 以便getActivity work
  • 如何将 JUnit 测试用例导出到可执行的 .jar 中?

    我正在使用 Selenium 和 JUnit 来自动化一些测试 我希望能够将其导出到可运行的 jar 文件中 我无法做到这一点 我假设这是因为没有 main 方法 JVM 不知道要运行什么 我看到了这个帖子如何将 JUnit 测试套件导出为
  • 在 main() 之前、之后或内部声明函数有什么优点?

    我正在尝试学习嵌入式系统的C语言 目前我正在学习基础知识 但无法找到一个基本问题的答案 当我编写一个简单的 C 程序时 我用三种方式声明了一个名为 Maximum 的函数 我将通过以下示例进行解释 1 在下面的程序中 函数在 main 外部
  • 用于自动化的 User32 API 自定义 PostMessage

    我想用 C 自动化一个名为 Spotify 的程序 我认为 最好的方法是触发假按键 我想编程来暂停播放 但我对这个东西了解不够 无法找到按键以外的其他方法 因此 我使用 Visual Studio 的 Spy 来查看按下键盘上的播放按钮时
  • 当单词超过2亿时,如何使用Java去除重复单词?

    我有一个文件 大小 1 9 GB 其中包含 220 000 000 2 2 亿 个单词 字符串 它们有重复 几乎每 100 个单词就有 1 个重复单词 在我的第二个程序中 我想读取该文件 我成功使用 BufferedReader 逐行读取文
  • pitest 找不到测试

    我在 SonarQube 项目中遇到问题 我想计算一些有关测试质量的统计数据 我正在使用pitest 不幸的是 它没有找到任何变异的测试 这是pom xml我正在分析的模块
  • 在 Xcode 中禁用 AdMob 日志记录

    当我安装 Google Mobile Ads SDK cocoapod 时 我收到了大量日志记录 有些似乎完全无关 但不知何故 因为完全删除 Google Mobile Ads SDK pod 会删除所有日志记录 这是我所拥有的 Podfi
  • 捕获 log4j 输出

    我们正在使用log4j2广泛地存在于我们的系统中 并对其进行配置log4j2 xml 现在我需要一个可以运行的新应用程序jobs 我想单独捕获时间 X 和 Y 之间产生的所有日志并将其放入数据库中 我们框架的正常日志记录应该照常发生 记录到
  • jQuery .toggleClass() 速度

    我使用 jQuery toggleClass 函数 类将在每次点击时切换 效果完美 但我无法设置速度 我已经尝试过 databox toggleClass boxopened 7000 还有这个 databox toggleClass bo
  • Jenkins:Gerrit 触发器问题的设置

    我在 Jenkins 上安装了插件 Gerrit Trigger 因为当团队中的开发人员在存储库上推送某些内容 相对于特定项目 时 我需要自动启动构建 我按照这里的设置 https wiki jenkins ci org display J
  • 迭代对象的嵌套数组,查找 id 并更新与 id 匹配的对象

    我的输入如下 它是一个对象数组 每个对象都有状态 这也是一个对象数组 我想追加details当状态 id 与状态匹配时 在 states 对象内部id如以下所说的 IE 82175746 const input country id 877