如何计算数组中数组的元素?

时间:2013-07-22 16:10:52

标签: ruby arrays hash

我有一个从网页返回酒店数量的方法:

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 个答案:

答案 0 :(得分:3)

您要显示的数组嵌套在另一个数组中。所以外部数组长度为1,内部数组就是你想要的。

要获得它,您必须首先使用[0]first

获取外部数组的第一个元素
testList[0].length
testList.first.length

我不确定为什么你的getHotelsList方法返回一个嵌套数组,它似乎不需要它。

答案 1 :(得分:2)

hotel_count = getHotelsList.values.first.length

您也可以使用[0]执行此操作,但first更快。

两个注释:

  • 您最初不需要self
  • 在Ruby中使用camel case作为方法名称是一个坏习惯。最好是get_hotels_list

答案 2 :(得分:2)

您可以使用flatten将其转换为单个数组:

hotel_count = self.getHotelsList.values.flatten.size