這是我的數組:array = ["1", "Hel", "6", "3", "lo" ]
我想輸出數組中的最小數。那麼我想輸出數組中最大的數字?我如何實現這一目標?謝謝!簡單的紅寶石數組最小整數?
回答
那麼它取決於你想如何處理不容易被解析成數字的字符串元素。像「Hel」和「lo」。
如果你這樣做:
array.map {|x| Integer(x) rescue nil }.compact.min
array.map {|x| Integer(x) rescue nil }.compact.max
然後你就會忽略這些,這可能是正確的事情,假設你沒有一些原因考慮「赫爾」和「LO」有數字值。
不錯。如何在第一個末尾添加'max'並刪除第二個? –
numbers = array.select { |x| x[/^-?\d+$/] }.map(&:to_i)
# => [1, 6, 3]
numbers.min
# => 1
numbers.max
# => 6
想到[「103」,「12」] ... –
哦,小心使用正則表達式,如果數組中有負數。你會想要考慮''-999「'這會排除。 –
@MichaelBerkowski如果你開始說,那麼數組中可能會有小數點或科學符號。 OP沒有說清楚,所以我們會採取我們想要的任何方式。含糊不清是OP的錯。 – sawa
smallest, largest =
["1", "Hel", "6", "3", "lo" ].reject{|s| s =~ /\D/}.minmax_by(&:to_i)
smallest # => "1"
largest # => "6"
另一個變化負數工作
smalles, largest =
["1", "Hel", "6", "3", "lo","-9" ].select { |x| x[/^-?\d+$/] }.minmax_by(&:to_i)
最小#=> -9最大#=> 6
另一種方式:
array.join(',').scan(/-?\d+/).minmax_by(&:to_i)
#=> ["-4", "6"]
我們可以使用unicode [[:數字:]]。而不是寫正則表達式如 array.join( '')掃描(/ [[:位:]] /)。minmax_by(&:to_i)
- 1. 紅寶石數組 - 最高整數
- 2. 紅寶石小數
- 3. 紅寶石數組,散列,整數
- 4. 紅寶石數組
- 5. 數組大小太大 - 紅寶石
- 6. 陣列單獨的數組紅寶石
- 7. 紅寶石簡單替換
- 8. 簡單解析紅寶石
- 9. 紅寶石組整數數組到範圍數組
- 10. 紅寶石數組排序
- 11. 紅寶石:訪問數組
- 12. 遍歷數組紅寶石
- 13. 紅寶石多維數組
- 14. 紅寶石數組哈希
- 15. 紅寶石:數組操作
- 16. 拆分數組。紅寶石
- 17. 紅寶石數組值串
- 18. 紅寶石 - 從JSON數組
- 19. 紅寶石 - 訂購數組
- 20. 紅寶石數組輸入
- 21. min_by紅寶石(在關聯數組最小值)
- 22. 紅寶石中字符的整數值?
- 23. 紅寶石陣圖的整數
- 24. 簡單的數字計數器使用紅寶石
- 25. 紅寶石的整數字符串數組排序順序
- 26. 使用紅寶石的數據縮小
- 27. 紅寶石中的二進制小數
- 28. 簡單的紅寶石對象順序
- 29. 簡單的紅寶石程序
- 30. 非常簡單的DSL在紅寶石
根據您的要求做「數字」是否包含負數,浮點數,科學記數法?或者只是簡單的舊簡單的正整數? –
你通過學習Ruby來完成它,然後做自己的家庭作業。 –
這是排序分配的一部分嗎?我已經看到了今天使用'[「1」,「Hel」,「6」,「3」,「lo」]'陣列的不同人的幾個問題。 –