我有以下2個數組:在Ruby中
fields = ["name", "team", "number", "name", "team", "number", "name", "team", "number"]
values = ["Patrick Ewing", "New York Knicks", 33, "Rik Smits", "Indiana Pacers", 45, "Bill Russell", "Boston Celtics", 6]
字段將永遠是唯一的名字,團隊和數量,但值的數量(即,玩家人數)會每次都有所不同。
我想創建的每個字段類型的新陣列,這樣我會得到如下:
names = ["Patrick Ewing", "Rik Smits", "Bill Russell"]
teams = ["New York Knicks", "Indiana Pacers", "Boston Celtics"]
numbers = [33,45,6]
什麼是做到這一點的好辦法?我嘗試了以下方法,但想知道是否還有其他解決方案可以在較大的陣列(最多300個)上執行得更好。或者差異可以忽略不計?
names = values.values_at(*(fields.each_index.select{ |i| fields[i] == "name"}))
teams = values.values_at(*(fields.each_index.select{ |i| fields[i] == "team"}))
numbers = values.values_at(*(fields.each_index.select{ |i| fields[i] == "number"}))
你嘗試過什麼?我們更喜歡這不僅僅是一個代碼寫入服務。這就是說,這看起來像一個'zip'的工作。 –
'fields'列表總是一樣嗎?這是組織數據的一種奇怪方式,因此如果您可以調整它,則可能需要較少的處理。 – tadman
@DaveSchweisguth我嘗試了一些東西並在下面發佈。我明白你爲什麼這麼認爲,但我是一個新手,喜歡通過看看別人會在我自己嘗試一個解決方案時做什麼來學習。 – massaskillz