Ruby 中的 Array.prototype.splice

2023-11-21

有朋友问我用Ruby最好、最高效的方式来达到JavaScript的效果spliceRuby 中的方法。 这意味着不对数组本身或副本进行迭代。

“从索引开始处开始,删除长度项并(可选)插入元素。最后在数组中返回删除的项。” 这是误导性的,请参阅下面的 JS 示例。

http://www.mennovanslooten.nl/blog/post/41

没有的快速破解optional代换:

from_index     = 2
for_elements   = 2
sostitute_with = :test
initial_array  = [:a, :c, :h, :g, :t, :m]
# expected result: [:a, :c, :test, :t, :m]
initial_array[0..from_index-1] + [sostitute_with] + initial_array[from_index + for_elements..-1]

你的是啥呢? 一根线比较好。

Update:

// JavaScript
var a = ['a', 'c', 'h', 'g', 't', 'm'];
var b = a.splice(2, 2, 'test'); 
> b is now ["h", "g"]
> a is now ["a", "c", "test", "t", "m"]

我需要结果“a”数组,而不是“b”。


Use Array#[]=.

a = [1, 2, 3, 4, 5, 6]
a[2..4] = [:foo, :bar, :baz, :wibble]
a # => [1, 2, :foo, :bar, :baz, :wibble, 6]

# It also supports start/length instead of a range:
a[0, 3] = [:a, :b]
a # => [:a, :b, :bar, :baz, :wibble, 6]

至于返回被删除的元素,[]=不这样做...您可以编写自己的辅助方法来执行此操作:

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

Ruby 中的 Array.prototype.splice 的相关文章

随机推荐

  • Rails 中用户指定的动态模型字段

    有谁知道 gem 或允许用户向模型添加字段的良好实现 Ex 用户希望向联系人模型添加 内部注释 字段 在界面中 他们只需选择 新字段 gt 类型 文本 Thanks 抱歉 我不知道有任何插件可以做到这一点 但我有一个实施建议 这个想法是添加
  • 如何强制焦点编辑文本

    我阅读了有关如何设置要聚焦的对象的问题 但我似乎找不到我想要做的事情的答案 使用 On Focus Listener 我完成了以下操作 Ehour setOnFocusChangeListener new OnFocusChangeList
  • QML - 启动时主窗口位置(屏幕中心)

    我可以如何执行以下操作 我想在开始时在中央屏幕上显示我的主窗口 如果使用 QtQuick 可以这样做 import QtQuick 2 2 import QtQuick Controls 1 1 import QtQuick Window
  • 在Python中创建“反向”列表的最佳方法? [复制]

    这个问题在这里已经有答案了 在Python中 创建一个新列表的最佳方法是什么 该列表的项目与其他列表的项目相同 但顺序相反 我不想修改现有列表 这是我想到的一种解决方案 new list list reversed old list 复制也
  • 生成随机SQL Server 2008时间测试数据

    我正在尝试生成一个大型数据集 其中包括 SQL Server 2008 中的时间数据类型 我的表中已经有一些非时间数据 所以我想将整个过程保留在 T SQL 中并使用插入到 select 从一个表中获取部分数据 并将其与一些生成的数据 包括
  • 在 Android 启动器中托管小部件

    我正在为 android 制作一个启动器 但我被困在小部件部分 我在互联网上搜索了大约一个半小时 试图弄清楚如何在我的应用程序中托管小部件 但没有运气 我已经浏览了一些库存启动器和 ADW 启动器代码 但两者都只有数英里的代码 这是我第一次
  • 我无法安装回形针

    我是 Rails 新手 我需要安装 Peperclip https github com thoughtbot paperclip 但我不能 我已经查看了我能找到的所有教程 但我无法找到错误在哪里 我安装了 ImageMagick 并遵循
  • 增加字体真棒图标

    我在使用一些字体很棒的图标时遇到了一些麻烦 我正在尝试增加其中一些的大小 但由于某种原因 我似乎没有做任何事情 这是我的html div class span5 bookBuild div class well well small h4
  • 如何在 Javascript 中按 15 分钟间隔对 json 集合进行分组

    假设我们在 Javascript 中有一个这样的集合 date Fri 02 May 2014 19 05 00 GMT value abc date Fri 02 May 2014 23 43 00 GMT value jkl date
  • 显示自 master 的原始分支点以来 git 分支中的所有提交

    我正在寻找一种方法来查看自分支点 并包括它 以来活动分支上的所有提交 并希望自主分支以来 例如这样的情况 A B C D master E F branch A 我想要获得提交 F E 和 B 而 F 是 HEAD And for A B
  • Google Apps 脚本电子表格评论自动化

    今天我有一个关于 Google Apps 脚本的问题 特别是电子表格 我已经看过文档了here 是的 有关a的文档Sheet在电子表格中 但我一直无法找到我要找的东西 这是西奇 1 当在 Google 电子表格中编辑单元格时 我的函数会设置
  • 安装和运行 rcpp 时出错

    我对 R 还很陌生 所以对一个愚蠢的问题表示歉意 我正在尝试让 rcpp 运行 但我陷入了 R 的无限循环 要求我重新安装 RTools 我大致遵循了以下代码这篇博文 虽然第一次休息时我手动安装了所有东西 随后我又重新安装了几次 我正在运行
  • Java:负数右移

    我对负数的右移操作感到非常困惑 这是代码 int n 15 System out println Integer toBinaryString n int mask n gt gt 31 System out println Integer
  • 通过特定位置和经度获取屏幕坐标(android)

    我有一个增强现实的应用程序 其中存储了地铁 加油站 名胜古迹等信息以及相应的纬度和经度 现在 根据设备的方向 我将在设备的相机视图中显示每个站点的标记 类似于 Layar 和 Wikitude 找了三天没有间断 也没有找到人解释如何解决这个
  • 为什么 kinect 颜色和深度无法正确对齐?

    我已经研究这个问题很长一段时间了 并且我的创造力已经结束 所以希望其他人可以帮助我指明正确的方向 我一直在使用 Kinect 并尝试将数据捕获到 MATLAB 幸运的是 有很多方法可以做到这一点 我目前正在使用http www mathwo
  • 所有系统引用都缺少 Visual Studio 2013 NuGet Async

    我在 Visual Studio 2013 中设置了一个解决方案 团队项目 并且有一段时间为 NET Framework 4 0 安装了一个可用的 NuGet Microsoft Bcl 异步包 今天 当打开项目时 无法找到所有默认的 NE
  • 在@RequestParam中绑定列表

    我以这种方式从表单发送一些参数 myparam 0 myValue1 myparam 1 myValue2 myparam 2 myValue3 otherParam otherValue anotherParam anotherValue
  • 如何在选中时覆盖 Material UI 开关组件的样式?

    我想控制开关组件的颜色 无论是在选中还是未选中时 默认情况下它是红色的 我希望当开关状态为 球形旋钮 时为黄色checked true我希望它是灰色的 什么时候checked false I must通过使用来实现样式createMuiTh
  • 如何更改 Material-UI 滑块颜色

    我想更改 Material UI Slider 组件颜色 我尝试更改CSS样式但它不起作用 然后我尝试了中给出的解决方案this问题并应用了此代码 但它不起作用 获取Mui主题 const muiTheme getMuiTheme slid
  • Ruby 中的 Array.prototype.splice

    有朋友问我用Ruby最好 最高效的方式来达到JavaScript的效果spliceRuby 中的方法 这意味着不对数组本身或副本进行迭代 从索引开始处开始 删除长度项并 可选 插入元素 最后在数组中返回删除的项 这是误导性的 请参阅下面的