我有一个数组说my_array,其数据如下:
[
{
: name=>"Orange",
: data=>[
[
1421215199000,
0
],
[
1421215199000,
2.2566121687633
],
[
1421819999000,
0
],
[
1421819999000,
2.43260664893362
],
[
1422424799000,
0
],
[
1422424799000,
0
]
]
},
{
: name=>"Apple",
: data=>[
]
},
{
: name=>"Mango",
: data=>[
]
}
]
从“:data”的values / array中,我希望删除值为“0”的数组对象。如本例所示,我希望删除以下项目:
[
1421215199000,
0
],
[
1421819999000,
0
],
[
1422424799000,
0
],
[
1422424799000,
0
]
因此,删除上述项目后的最终my_array应如下所示:
[
{
: name=>"Orange",
: data=>[
[
1421215199000,
2.2566121687633
],
[
1421819999000,
2.43260664893362
]
]
},
{
: name=>"Apple",
: data=>[
]
},
{
: name=>"Mango",
: data=>[
]
}
]
有没有一种简单的方法可以在红宝石中实现这一目标?
答案 0 :(得分:0)
#!/usr/bin/env ruby
require 'pp'
f = [
{
:name=>"Orange",
:data=>[
[
1421215199000,
0
],
[
1421215199000,
2.2566121687633
],
[
1421819999000,
0
],
[
1421819999000,
2.43260664893362
],
[
1422424799000,
0
],
[
1422424799000,
0
]
]
}]
tp = f.collect{|x| x.merge(:data => x[:data].reject{|p| p[1]==0}) }
pp tp
收集所有的魔力。
阅读方式是: 对于数组的每个元素,哈希,将数据键关联的值替换为通过遍历数据键生成的值,并拒绝数组中第二项等于0的所有元素。