我有这个Ruby结构
AMOUNT_LIMITS = {
qqpay: {
cny: { min: 10_00, max: 10_00_00 }
},
online_banking: {
cny: { min: 10_00, max: 50_000_00 },
thb: { min: 10_00, max: 500_000_00 },
idr: { min: 10_000_00, max: 50_000_000_00 },
myr: { min: 10_00, max: 10_000_00 }
},
bank_payout: {
thb: { min: 350_00, max: 350_00 },
idr: { min: 50_000_00, smax: 50_000_00 },
myr: { min: 50_00, max: 50_00 }
}
如何从地图上获取货币类型?例如:
AMOUNT_LIMITS[transaction_type.to_sym].sample
我只需要键cny
作为字符串。
答案 0 :(得分:1)
要获取具有权重的样本:
AMOUNT_LIMITS.values.flat_map { |h| h.map(&:first) }.sample.to_s
#⇒ 'thb'
要获得具有相同概率的任何货币,请在中间使用uniq
:
AMOUNT_LIMITS.values.flat_map { |h| h.map(&:first) }.uniq.sample.to_s
#⇒ 'cny'
要根据交易类型获取货币,
AMOUNT_LIMITS[:onlibe_banking].keys.sample.to_s
#⇒ 'cny'