如何在多维数组中找到最长的字符串?

我试图从多维数组中获取最长的字符串,但由于某种原因它不起作用。

这就是我所拥有的:

a = ["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MTYINLGVTRTGDLMIGRHRP"], ["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"], ["MAACGLGRVFSAFKVDEMD"], ["MPSGFVGKRSGFCQFCCSHI"], ["MTYSTAKEGAYPFRNFN"]] p a.max_by{|v|v}[0] # => "MTYSTAKEGAYPFRNFN" 

有人可以让我知道我做错了什么吗?

 => a.flatten.max_by(&:size) => # "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS" 
 a = [ ["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MTYINLGVTRTGDLMIGRHRP"], ["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"], ["MAACGLGRVFSAFKVDEMD"], ["MPSGFVGKRSGFCQFCCSHI"], ["MTYSTAKEGAYPFRNFN"] ] p a.max_by { |v| v[0].size }[0] 

输出:

 "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS" 

只需指定v ,就可以对每个元素(单元素数组)进行比较。 它们按字典顺序进行比较。

这应该工作:

 a.max_by { |v| v.first.size }[0] 
 => a = [["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MTYINLGVTRTGDLMIGRHRP"], ["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"], ["MAACGLGRVFSAFKVDEMD"], ["MPSGFVGKRSGFCQFCCSHI"], ["MTYSTAKEGAYPFRNFN"] ] => a.flatten.sort_by(&:length).last #=> "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"