查找并替换数组中的特定哈希及其值

2023-12-03

在数组中查找特定哈希并就地替换其值的最有效方法是什么,以便数组也发生更改?

到目前为止,我已经得到了这段代码,但在具有大量数据的实际应用程序中,这成为应用程序中最慢的部分,这可能会泄漏内存,因为当我对每个 websocket 消息执行此操作时,无界内存会不断增长。

array = 
  [ 
    { id: 1,
      parameters: {
        omg: "lol"
     },
     options: {
         lol: "omg"
      }
    },
    { id: 2,
      parameters: {
        omg: "double lol"
      },
      options: {
        lol: "double omg"
      }
    }
  ]

selection = array.select { |a| a[:id] == 1 }[0]
selection[:parameters][:omg] = "triple omg"
p array
# => [{:id=>1, :parameters=>{:omg=>"triple omg"}, :options=>{:lol=>"omg"}}, {:id=>2, :parameters=>{:omg=>"double lol"}, :options=>{:lol=>"double omg"}}]

这将执行您仅循环记录一次之后的操作:

array.each { |hash| hash[:parameters][:omg] = "triple omg" if hash[:id] == 1 }

您始终可以扩展该块来处理其他情况:

array.each do |hash| 
  hash[:parameters][:omg] = "triple omg" if hash[:id] == 1
  hash[:parameters][:omg] = "quadruple omg" if hash[:id] == 2
  # etc
end

并且它只会对元素进行一次迭代。

您也可能更适合将数据调整为单个散列。一般来说,搜索哈希会比使用数组更快,特别是如果您有如此处的唯一标识符。就像是:

{ 
  1 => {
    parameters: {
      omg: "lol"
    },
    options: {
      lol: "omg"
    }
  },
  2 => {
    parameters: {
      omg: "double lol"
    },
    options: {
      lol: "double omg"
    }
  } 
}

这样,您只需调用以下内容即可实现您所追求的目标:

hash[1][:parameters][:omg] = "triple omg"

希望这会有所帮助 - 如果您有任何疑问,请告诉我您的进展情况。

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

查找并替换数组中的特定哈希及其值 的相关文章

  • Rails 中的 PDF 导出

    我需要将包含一些图表的 HTML 页面导出为 PDF 有哪些好的 gem 可以做到这一点 PDFKit http railscasts com episodes 220 pdfkit http railscasts com episodes
  • 预期的 ProductField,出现数组问题

    我有一个 Rails 4 应用程序 它有一个如下所示的 params 块 def store params params require store permit name description user id products attr
  • Ruby 枚举器中的“break”与“raise StopIteration”

    如果我使用 Ruby Enumerators 来实现生成器和过滤器 generator Enumerator new do y x 0 loop do y lt lt x x 1 break if x gt CUTOFF end end l
  • 如何在 Rails 4 中使用 params.require

    我有一个像这样的私有方法 用于有四个字段的注册表单 firstname email password and confirm password 我不知道如何检查password confirmation def user params pa
  • 如何从 Rails 中的 date_select 或 select_date 获取日期?

    Using select date给我回一个params my date with year month and day属性 如何轻松获取 Date 对象 我希望有类似的事情params my date to date 我很高兴使用date
  • 多重要求和允许强参数rails 4

    在下面的情况下 我尝试使用强参数 我想要求email address password并允许remember me fields 但像下面这样使用它只允许最后一行在方法示例中 在下面的情况下 它只需要params permit rememb
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • 如何从 ruby​​ 中的字符串中删除所有非数字?

    用户输入数字的形式如下 1 800 432 4567 800 432 4567 800 432 4566 800 432 4567 1 800 432 4567 800 432 4567 我希望所有这些都变成没有特殊字符的剥离版本 例如18
  • “rmagick”gem 安装问题

    我在尝试在 centos 上安装 rmagick gem 时遇到问题 以下是我得到的输出 谁能帮我识别一下我缺少什么包裹 我已经安装了所有提到的另一个堆栈溢出线程 RMagick安装错误 https stackoverflow com qu
  • Rails - 渲染:目标锚标记的操作?

    我希望像这样使用渲染 render action gt page form 我也尝试过这个 render template gt site page form 那也没用 这个特定页面上的表单位于最底部 如果提交时发生任何错误 我不希望用户被
  • 已定义方法的 Ruby 钩子?

    我一直在谷歌上搜索这个问题 但找不到答案 这让我认为答案是否定的 但我想我会在这里问 以防有人确切知道 Ruby 是否有一个钩子来定义方法 即在模块或类上 如果没有 是否有人足够熟悉该实施的情况main对象以了解它到底如何将方法复制到Obj
  • 用户未定义的方法 attr_accessible 错误

    我正在尝试创建某种登录 我创建了一个用户脚手架并将此代码放在我的 user rb 中 class User lt ActiveRecord Base attr accessible name password digest password
  • Ruby require 'file' 不起作用,但 require './file' 可以。为什么?

    我有一个充满 ruby 文件的文件夹 当我尝试使用位于同一目录中的另一个文件中的一个文件时require file 我得到一个LoadError但是当我使用require file 一切正常 有人可以向我解释为什么会发生这种情况吗 如果有什
  • 在 Ruby 中创建一个空文件:相当于“touch”?

    创建一个的最佳方式是什么emptyRuby 中的文件 类似于 Unix 命令的东西 touch https en wikipedia org wiki Touch 28Unix 29 touch file txt FileUtils tou
  • Ruby/Rails 集合到集合

    我有两个表与一个连接表连接 这只是伪代码 Library Book LibraryBooks 我需要做的是 如果我有一个图书馆的 id 我想获取该图书馆拥有的所有书籍所在的所有图书馆 因此 如果我有图书馆 1 图书馆 1 中有书籍 A 和
  • 存根和 rspec 旧语法的问题

    我正在编写一些代码并使用 rspec 但收到警告 提示语法已过时 我不太清楚应该如何编写它 it should calculate the value correctly do mock cards Card new clubs 5 Car
  • Rails/Ruby 合并两个具有相同键、不同值的哈希值

    我有两个想要合并的哈希值 它们看起来像这样 Hello gt 3 Hi gt 43 Hola gt 43 第二个哈希看起来像 Hello gt 4 Hi gt 2 Bonjour gt 2 我想合并这两个哈希数组 使结果看起来像 Hello
  • 带有 OAuth2 的 YouTube API v3:更新和删除失败并出现“权限不足”错误

    我在尝试着update and delete视频使用YouTube API v3 https developers google com youtube v3 docs videos with OAuth2 用于身份验证 https dev
  • 使用哈希参数进行 DRY Ruby 初始化

    我发现自己经常在构造函数中使用哈希参数 尤其是在为配置或最终用户将接触到的其他 API 编写 DSL 时 我最终做的是类似以下的事情 class Example PROPERTIES name age PROPERTIES each p a
  • 超类与类SpecificationPolicy不匹配

    我得到了一个superclass mismatch for class SpecificationPolicy尝试安装或升级某些brew 软件包时出错 例如 更新安装 supabase CLI 时 brew install supabase

随机推荐

  • WebDriver 无法使用 Java 通过 xpath 找到元素

    以下是使用 Java 的 WebDriver 代码片段 WebDriver driver new FirefoxDriver driver get http www google pl driver manage timeouts impl
  • 在每个组的分类 x 轴内叠加 geom_line - ggplot2

    I want to make a plot like this 这些方框代表连续变量在组内的分布 红色圆圈是显示所有实际观察结果的点 到目前为止 一切都很好 这很简单geom boxplot geom point具有群体审美 这里有两个曲折
  • 在 DI 注入容器中注册受约束的 MediatR 管道行为

    我有以下 MediatR 行为 public class FailFastRequestBehavior
  • matlab按字符数分割字符串

    Matlab 中是否有任何内置函数可以按字符数切割字符串并将其作为元胞数组或其他内容返回 例如 如果调用 A some function string 3 Input string 1234567890 Output A 123 456 7
  • 如何提交通过引导弹出窗口加载的表单

    我如何使用 jquery 提交表单 我的表单已加载到引导弹出窗口上 我尝试了下面的 jquery 代码 但它没有提交表单 前任 我必须提交以下带有 id 161subproj 的表单 那么如何在加载到 popover 后提交此表单 希望我的
  • 容器固定宽度。中心 div 动态宽度。想要左右 div 均匀地填充剩余宽度

    有三列 所有三列的组合宽度是固定的 第二列 中心 将具有动态内容 我需要左右列来相等地填充剩余空间 容器宽度 中心列动态宽度 例子 http jsfiddle net htKje div class container div class
  • “unsigned int”打印为负数?

    我取一个整数 在本例中为 192 并将其左移 24 个空格 看起来 前导 1 导致它变成负数 unsigned int i 192 unsigned int newnumber i lt lt 24 NSLog newnumber is d
  • SIMD和动态内存分配[重复]

    这个问题在这里已经有答案了 可能的重复 SSE 内在函数和对齐 我是 SIMD 编程新手 所以如果我问一个明显的问题 请原谅 我进行了一些尝试 最后发现我想在动态分配的结构中存储 SIMD 值 这是代码 struct SimdTest m1
  • 此 SqlParameterCollection 不包含 ParameterName 为“@UserId”的 SqlParameter

    我有一个登录页面 用户成功登录后 他们可以查看和管理他们的个人资料 信息 这可以通过从数据库检索数据并显示在表单视图上来完成 但是 我的 userprofile aspx cs 文件中出现以下错误 Exception Details Sys
  • 如何使用 PHP 获取服务器上运行的 PHP 进程列表

    我有一个运行 PHP 文件的 cronjob 该文件运行用 PHP 编写的 DAEMON 但我只想在没有其他实例正在运行的情况下运行 DAEMON 如何获取正在运行的 PHP 进程列表 以便查找我的守护进程正在运行 我想到了某种 exec
  • 没有 Spring Cloud 配置服务器的 RefreshScope 运行时配置

    是否可以使用 RefreshScope 通过 POST Rest api refresh 调用来刷新属性 api url 而无需设置 Spring Cloud 配置服务器和 Spring Cloud 配置客户端设置 例如 Consumer
  • Ruby 方法拦截

    我想拦截 ruby 类上的方法调用 并能够在方法实际执行之前和之后执行某些操作 我尝试了以下代码 但出现错误 MethodInterception rb 16 inbefore filter eval 2 inalias method 未定
  • dbml 文件 - 创建数据库

    我正在尝试使用创建数据库BA dbml文件 Linq 到 Sql 我知道我必须创造DataContext并创建数据库 但我不知道该怎么做 我必须创建吗DataContext in the BA cs file 这可能是多余的帖子 对此我深表
  • 如何更改 iphone sdk xcode 中的 uiimage 颜色

    我正在使用不同的图像 我想包括更改颜色选项 但我不能 有身体帮助我吗 如果你想做图像着色 请参见 UIImage Tint m 中kballard MGImageUtilities 如果您想要批量颜色替换 例如 将图像视为剪影并将整个颜色更
  • 如何比较从 url 到 NSutf8stringencoding 的字符串返回 1 或 0 与普通字符串 @"1"

    我需要使用比较 url 中的字符串NSutf8stringencoding以便返回 1 或 0 但即使字符串值为 1 它也始终返回 0 NSString strURL NSString stringWithFormat http local
  • 使用自定义表情符号创建软键盘

    我的任务是创建一个新的 android3rd party keyboard支持来自资产的自定义表情符号 我自己的图标 我想用我自己的表情符号图标实现一个软键盘不使用 Unicode 或我的自定义 Unicode 问题 如果我创建一个自定义表
  • PHPUnit + Selenium:如何设置 Firefox about:config 选项?

    使用 PHPUnit 和 Firefox 远程运行 Selenium 测试时 onChange 事件不会像用户操作浏览器时那样被触发 解决这个问题的方法似乎是设置focusmanager testmode选项true在 Firefox 的偏
  • 回发期间 GridView.DataSource 为空

    我想从我的应用程序中的每个 Gridview 实现打印 下载 csv 那些通过数据源或直接通过 gvSample DataSource Data gvSample DataBind 现在我的第一个方法是在页脚模板中设置一个下载按钮并在那里处
  • 从 .m matlab 文件中声明的矩阵创建 numpy 数组

    一位同事留下了一些我想用 Numpy 分析的数据文件 每个文件都是一个 matlab 文件 例如data m 并具有以下格式 但有更多的列和行 values 24 92 23 66 22 55 24 77 23 56 22 45 24 54
  • 查找并替换数组中的特定哈希及其值

    在数组中查找特定哈希并就地替换其值的最有效方法是什么 以便数组也发生更改 到目前为止 我已经得到了这段代码 但在具有大量数据的实际应用程序中 这成为应用程序中最慢的部分 这可能会泄漏内存 因为当我对每个 websocket 消息执行此操作时