Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从数组中的散列中的数组中删除数据-Ruby_Ruby On Rails_Ruby_Arrays - Fatal编程技术网

Ruby on rails 从数组中的散列中的数组中删除数据-Ruby

Ruby on rails 从数组中的散列中的数组中删除数据-Ruby,ruby-on-rails,ruby,arrays,Ruby On Rails,Ruby,Arrays,我有一个数组,比如my_数组,其数据如下: [ { : name=>"Orange", : data=>[ [ 1421215199000, 0 ], [ 1421215199000, 2.2566121687633 ],

我有一个数组,比如my_数组,其数据如下:

[
    {
        : name=>"Orange",
        : data=>[
            [
                1421215199000,
                0
            ],
            [
                1421215199000,
                2.2566121687633
            ],
            [
                1421819999000,
                0
            ],
            [
                1421819999000,
                2.43260664893362
            ],
            [
                1422424799000,
                0
            ],
            [
                1422424799000,
                0
            ]
        ]
    },
    {
        : name=>"Apple",
        : data=>[

        ]
    },
    {
        : name=>"Mango",
        : data=>[

        ]
    }
]
从“:data”的值/数组中,我希望删除值为“0”的数组对象。在本例中,我希望删除以下项目:

[
    1421215199000,
    0
],

[
    1421819999000,
    0
],
[
    1422424799000,
    0
],
[
    1422424799000,
    0
]
因此,删除上述项目后的最终my_数组应该如下所示:

[
    {
        : name=>"Orange",
        : data=>[
            [
                1421215199000,
                2.2566121687633
            ],
            [
                1421819999000,
                2.43260664893362
            ]
        ]
    },
    {
        : name=>"Apple",
        : data=>[

        ]
    },
    {
        : name=>"Mango",
        : data=>[

        ]
    }
]
有没有一种简单的方法可以在ruby中实现这一点

#!/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的所有元素而生成的值