arrays - 在一对值之前剪切数组元素
问题描述
有了数组“a”,我想在数组“a”中查找一对值。“02”后跟“10”,如果找到,我想创建 2 个新数组,一个从“02”、“10”开始,另一个从“02”、“10”之后的 3 个位置开始。
a = ["11", "45", "01", "01", "02", "00", "10", "4C", "02", "10", "00", "42", "00", "00", "26"]
如果我分别查看 02 和 10 的索引,我分别得到 4 和 6,但“02”、“10”对的索引是 8。
irb(main)> a.index("02")
=> 4
irb(main)> a.index("10")
=> 6
所需的输出将是这样的:
b = ["02", "10", "00", "42", "00", "00", "26"]
c = ["00", "00", "26"]
我怎样才能做到这一点?
解决方案
def find_em(a)
i = (a.size-1).times.find { |i| [a[i], a[i+1]] == ["02", "10"] }
i.nil? ? nil : [a[i..-1], a[i+4..-1] || []]
end
find_em(a)
#=> [["02", "10", "00", "42", "00", "00", "26"], ["00", "00", "26"]]
find_em ["10", "4C", "02", "10", "00", "42"]
#=> [["02", "10", "00", "42"], []]
find_em ["10", "4C", "02", "10"]
#=> [["02", "10"], []]
find_em ["10", "4C", "10", "00", "42"]
#=> nil
find_em []
#=> nil
推荐阅读
- css - Safari 中的模糊与 3d CSS 转换和缩放
- php - 如何从地址标签中获取特定的用户代码
- python - Pandas - 通过在另一个数据框中查找来设置列中的值
- sql - 随着时间的推移计算 DISTINCT 新值 (SQL)
- flutter - 如何在不重定向到社交平台的情况下分享到 facebook、twitter、instagram 等社交媒体的链接
- python - 使用 pip 安装 python 模块时出错
- javascript - react-map-gl showUserHeading 不在 GeolocateControl 中
- c# - 从电子邮件中读取多个 pdf 附件并将所有附件保存为单个 pdf 文件
- css - 如何以 .woff2 字体导入并在 sass 设置中使用它?
- google-chrome-extension - 如何将屏幕录制块上传到 YouTube?