2013-07-22 135 views
-1

我有返回的酒店從網頁數量的方法:如何計算數組內數組的元素?

hotel_count = self.getHotelsList.values 

這種方法的輸出是:

[["hotel_0", "hotel_1", "hotel_2", "hotel_3", "hotel_4", "hotel_5", "hotel_6", "hotel_7", "hotel_8", "hotel_9", "hotel_10", "hotel_11", "hotel_12", "hotel_13", "hotel_14", "hotel_15", "hotel_16", "hotel_17", "hotel_18", "hotel_19", "hotel_20", "hotel_21", "hotel_22", "hotel_23", "hotel_24", "hotel_25", "hotel_26", "hotel_27", "hotel_28", "hotel_29", "hotel_30", "hotel_31", "hotel_32", "hotel_33", "hotel_34", "hotel_35", "hotel_36", "hotel_37", "hotel_38", "hotel_39", "hotel_40"]] 

我想知道這個數組的長度,但如果我寫

hotel_count = self.getHotelsList.values.length 

長度是1.我怎麼能得到長度41,這是我期待的?

謝謝

回答

3

您顯示的數組嵌套在另一個數組中。所以外部數組是長度爲1的,內部數組就是你想要的。

爲了得到它,你必須使用[0]first

testList[0].length 
testList.first.length 

我不知道爲什麼你的getHotelsList方法返回一個嵌套的數組首先得到外數組的第一個元素,它不會出現需要它。

+0

謝謝!我正在嘗試使用[0],但無法使其工作。不過,使用'第一'這個伎倆。 – Samer

+0

@Samer:它也應該使用'[0]'。 –

2
hotel_count = getHotelsList.values.first.length 

您還可以使用[0]做到這一點,但first更快。

有兩點需要注意:

  • 你不會在一開始需要self
  • 在Ruby中使用駱駝大小寫方法名是個壞習慣。最好是get_hotels_list
+1

感謝您的提示!我會立即修復它們 – Samer

2

你可以轉換到這一個單一的陣列flatten

hotel_count = self.getHotelsList.values.flatten.size