首页 > 解决方案 > 根据是否偶数过滤数组中的数字

问题描述

我正在尝试获取一系列数字,但只有结果与偶数/奇数相同,因为该@low数字event是 logstash 变量,它有效,@low 和 @high 是整数。

def filter(event)
    @low = event.get('lowhousenumber').to_i
    @high = event.get('highhousenumber').to_i
    @arr = (@low..@high).to_a.partition { |v| v.even? }

        if @low%1==0
                return event.set('addressrange', @arr[0]) // needs to set even results
        else
                return event.set('addressrange', @arr[1]) // needs to set odd results
        end
end

when @lowis500和 @high506的输出应该是500, 502, 504, 506if@low是 501 并且@high507输出应该是501,503,505,507

标签: arraysrubydatabasefilterlogstash

解决方案


Logstash 需要返回一个事件数组,所以这应该可以解决问题

def filter(event)
    @low = event.get('lowhousenumber').to_i
    @high = event.get('highhousenumber').to_i

    filter = @low.even? ? 'even?' : 'odd?'

    @arr = (@low..@high).to_a.select{|i| i.send(filter) }

    event.set('addressrange', @arr)

    return [event]
end

推荐阅读