I have a ruby array that looks like this:
[nil, 3, 4, 2]
我希望将其转换为整数,如下所示:
342
如果可以,那么我该如何做到这一点?[nil, 3, 4, 2].join.to_i
#=> 342
[nil, 3, 4, 2].inject(0){|x, d| d ? (x * 10) + d : x}
# => 342
ary.compact.inject { |x, d| x * 10 + d }
来处理 nil
。 - Stefana = [nil, 3, 5, 5]
a.each_with_index.inject(0) { |s, e| s+(e[0].to_i)*(10**(a.length-1-e[1])) }
#=> 355
以下是更多类似于Ruby的同义词。感谢@Stefan提供的指导。
a.reverse.each_with_index.inject(0) { |s, (i, e)| s + i.to_i * 10 ** e }
a.reverse_each.with_index.inject(0) { |s, (i, e)| s + i.to_i * 10 ** e }
a.length
:a.reverse_each.with_index.inject(0) { |s, (i, e)| s + i.to_i * 10 ** e }
- Stefanreverse_each
-)) 谢谢。 - marmeladze
nil
,那么像[nil, nil, nil]
这样的数组应该转换成什么?(如果你的答案是0
,那么像[3, 2, nil, 1]
这样的数组应该转换成321
还是3201
?) - Tom Lord[nil, 1]
或[nil, 1, 2]
或[nil, 3, 4, 2]
的形式返回一个数组。在出现[nil,0,1]
的情况下,我希望得到的结果为1
,而对于[nil,1,0,4]
则应该得到104
。我不确定这是否符合您的要求? - Lesego M[nil]
和[0]
吗?你想将它们同时转换为0
吗? - Tom Lord