2009-11-01 30 views
4

這是我迄今爲止如何在ruby的數組中找到整數/最大整數並返回索引位置?

ages = [20,19,21,17,31,33,34] 
names = [Bob, Bill, Jill, Aimee, Joe, Matt, Chris] 

如何採取年齡和應用方法將其提取的最大整數出來,並瞭解它的索引位置。原因是我想知道名字中的哪個人是最古老的。並行分配阻止了我在數組上執行.sort的能力,因爲它改變了與名稱關聯的元素的位置。

請包括代碼仔細考慮感謝,

回答

3
names[ages.index(ages.max)] 

它所做的是找到在年齡的最大值(ages.max),獲得青睞的第一個匹配值的索引,並用它來得到相應的人。請注意,如果兩個或多個人的年齡最大,它只會給你數組中第一個的名字。

編輯:爲了解決您的評論,我不確定爲什麼你需要這個平行的數組結構(如果你只有一個人物對象,它會容易得多)。不過,你可以嘗試這樣的:

indices = [] 
ages.each_with_index { |age, i| indices << i if age < 20 } 
indices.each { |i| puts names[i] } 
+0

嗯試圖確定其他值,則最小或最大像20仍讓我在黑暗中約的嘗試不同的東西,一個小時後。繼承人我正在嘗試做什麼。查找所有年齡值小於20.採用其索引元素位置並返回名稱值低於20 age = [20,19,21,17,31,33,34] names = [Bob,Bill,Jill,Aimee ,Joe,Matt,Chris] 所以我認爲應該是: puts names [ages.each_index {| n | n <20}] 雖然我在名稱內部返回了錯誤。顯然,輸出應該是Bob,Bill,Aimee。 THANKs幫助平行陣列, 馬特 – Matt 2009-11-01 23:44:04

+0

嗯..該代碼的問題是,通過使用each_index你比較索引與20,並且什麼也不做(each_index只是執行塊傳遞它的每個索引,但你的塊評估爲真或假,沒有副作用)。此外,each_index返回數組,並且不能將數組用作另一個數組的索引。我已經更新了我的答案,代碼應該可以做你想做的(只打印Bill和Aimee,因爲Bob是20,而20不小於20)。 – 2009-11-02 02:22:22

相關問題