ruby基于另一个数组从数组中删除项目

用户名

我有两个数据,

{:date=>"2015-09-23", :time=>["13:30"]}
{:date=>"2015-09-23", :time=>["12:00"]}
...more

我试图从中删除

{:date=>"2015-09-21", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
{:date=>"2015-09-22", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
{:date=>"2015-09-23", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
{:date=>"2015-09-24", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}

我希望可以得到的输出

{:date=>"2015-09-21", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
{:date=>"2015-09-22", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
{:date=>"2015-09-23", :time=>["12:30", "13:00", "14:00", "14:30"]}
{:date=>"2015-09-24", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}

我试过了

removeAry.each do |b|
  if b[:date] == "2015-09-23"
    puts b[:time].to_s.delete("13:30")
  end
end

有更好的主意吗?

阿列克谢·谢恩(Alexey Shein)

好的,这就是我要做的:

require 'set'

to_delete = [
  {:date=>"2015-09-23", :time=>["13:30"]},
  {:date=>"2015-09-23", :time=>["12:00"]}
]

data = [
  {:date=>"2015-09-21", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]},
  {:date=>"2015-09-22", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]},
  {:date=>"2015-09-23", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]},
  {:date=>"2015-09-24", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
]

# convert to_delete array to a hash { "2015-09-23" => #<Set: {"13:30", "12:00"}> }
# we use Set here to store only unique time values
to_delete_as_hash = to_delete.reduce({}) do |acc, item|
  acc[item[:date]] ||= Set.new
  acc[item[:date]] += item[:time]
  acc
end

filtered = data.map do |item|
  # skip this item if there's no need to process this date
  next item unless to_delete_as_hash[item[:date]]
  # subtract to_delete values from current item[:time] values
  item[:time] -= to_delete_as_hash[item[:date]].to_a
  item
end

p filtered

输出:

[
    {:date => "2015-09-21", :time => ["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]},
    {:date => "2015-09-22", :time => ["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]},
    {:date => "2015-09-23", :time => ["12:30", "13:00", "14:00", "14:30"]},
    {:date => "2015-09-24", :time => ["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从数组中删除与另一个数组中的项目相等的项目?

来自分类Dev

删除一个数组中的项目,该项目在另一个数组中成角度?

来自分类Dev

如何基于存储在另一个数组中的索引获取数组的项目

来自分类Dev

从基于另一个数组的数组中删除对象

来自分类Dev

如何基于另一个数组删除或屏蔽numpy数组中的值

来自分类Dev

删除数组中另一个数组中的项目

来自分类Dev

删除另一个数组中的元素

来自分类Dev

从另一个数组中删除一个数组的内容

来自分类Dev

从另一个数组中删除一个数组的内容

来自分类Dev

如果另一个数组具有相似的项目,则从数组中删除项目

来自分类Dev

基于另一个数组在SystemVerilog中约束整个数组

来自分类Dev

基于另一个数组在SystemVerilog中约束整个数组

来自分类Dev

删除基于另一个数组的数组元素

来自分类Dev

使用Typescript从数组json中删除未在另一个数组中列出的对象(项目)

来自分类Dev

删除另一个数组的数组值

来自分类Dev

React钩子从数组中删除项目并将其添加到另一个数组

来自分类Dev

PHP 使用另一个数组删除数组中的数组

来自分类Dev

Ruby on Rails如何在数组中查找与另一个数组中的项目匹配的第一个项目

来自分类Dev

基于另一个数组中包含的索引的数组值

来自分类Dev

基于另一个数组中的信息对NumPy数组进行操作

来自分类Dev

如何在Python中基于另一个数组更新数组?

来自分类Dev

基于另一个数组索引在 PHP 中对数组进行排序

来自分类Dev

检查基于另一个数组的数组中是否存在值

来自分类Dev

基于另一个数组的ndarray的子集

来自分类Dev

基于另一个数组映射一个数组

来自分类Dev

javascript:将项目从一个数组中取出并放入另一个数组中

来自分类Dev

在另一个数组中对一个数组中的项目进行计数

来自分类Dev

如何在php中从另一个数组中删除一个数组?

来自分类Dev

如何在 JavaScript 中将一个数组添加为另一个数组中的项目

Related 相关文章

  1. 1

    如何从数组中删除与另一个数组中的项目相等的项目?

  2. 2

    删除一个数组中的项目,该项目在另一个数组中成角度?

  3. 3

    如何基于存储在另一个数组中的索引获取数组的项目

  4. 4

    从基于另一个数组的数组中删除对象

  5. 5

    如何基于另一个数组删除或屏蔽numpy数组中的值

  6. 6

    删除数组中另一个数组中的项目

  7. 7

    删除另一个数组中的元素

  8. 8

    从另一个数组中删除一个数组的内容

  9. 9

    从另一个数组中删除一个数组的内容

  10. 10

    如果另一个数组具有相似的项目,则从数组中删除项目

  11. 11

    基于另一个数组在SystemVerilog中约束整个数组

  12. 12

    基于另一个数组在SystemVerilog中约束整个数组

  13. 13

    删除基于另一个数组的数组元素

  14. 14

    使用Typescript从数组json中删除未在另一个数组中列出的对象(项目)

  15. 15

    删除另一个数组的数组值

  16. 16

    React钩子从数组中删除项目并将其添加到另一个数组

  17. 17

    PHP 使用另一个数组删除数组中的数组

  18. 18

    Ruby on Rails如何在数组中查找与另一个数组中的项目匹配的第一个项目

  19. 19

    基于另一个数组中包含的索引的数组值

  20. 20

    基于另一个数组中的信息对NumPy数组进行操作

  21. 21

    如何在Python中基于另一个数组更新数组?

  22. 22

    基于另一个数组索引在 PHP 中对数组进行排序

  23. 23

    检查基于另一个数组的数组中是否存在值

  24. 24

    基于另一个数组的ndarray的子集

  25. 25

    基于另一个数组映射一个数组

  26. 26

    javascript:将项目从一个数组中取出并放入另一个数组中

  27. 27

    在另一个数组中对一个数组中的项目进行计数

  28. 28

    如何在php中从另一个数组中删除一个数组?

  29. 29

    如何在 JavaScript 中将一个数组添加为另一个数组中的项目

热门标签

归档