Метод карты рельсов для генерации массива хешей - PullRequest
0 голосов
/ 30 августа 2018

У меня есть массив хэшей, и я генерирую один массив хэшей, используя карту. Я могу сгенерировать массив has, когда у моего массива есть два значения, но я хочу сгенерировать один и тот же вид результата, используя один массив.

У меня есть массив, который:

 b =  [
    {
    id: 1,
    State: "Andhra Pradesh",
    Rural_Oct_16_Index_Final: 137.5,
    Rural_Oct_17_Index_Provisional: 143,
    Rural_Inflation_Rate_in_percentage: 4,
    Urban_Oct_16_Index_Final: 131.7,
    Urban_Oct_17_Index_Provisional: 135.6,
    Urban_Inflation_Rate_in_percentage: 3,
    Combined_Oct_16_Index_Final: 135.4,
    Combined_Oct_17_Index_Provisional: 140.3,
    Combined_Inflation_Rate_in_percentage: 3.6,
    created_at: "2018-08-30T05:01:58.000Z",
    updated_at: "2018-08-30T05:01:58.000Z"
    },
    {
    id: 2,
    State: "Bihar",
    Rural_Oct_16_Index_Final: 135.7,
    Rural_Oct_17_Index_Provisional: 138.7,
    Rural_Inflation_Rate_in_percentage: 2.2,
    Urban_Oct_16_Index_Final: 128.2,
    Urban_Oct_17_Index_Provisional: 131.4,
    Urban_Inflation_Rate_in_percentage: 2.5,
    Combined_Oct_16_Index_Final: 134.6,
    Combined_Oct_17_Index_Provisional: 137.6,
    Combined_Inflation_Rate_in_percentage: 2.2,
    created_at: "2018-08-30T05:01:58.000Z",
    updated_at: "2018-08-30T05:01:58.000Z"
    }
]

И я использую этот код:

 b.map do |el|
       { y: el['Rural_Oct_16_Index_Final'], label: el['State'] }
  end

Я получаю этот результат:

 [
   {
     y: 3.6,
     label: "Andhra Pradesh"
    },
    {
   y: 2.2,
  label: "Bihar"
  }
 ]

Итак, мой вопрос, когда мой массив имеет только одно значение, например:

  [
    {
    id: 1,
    State: "Andhra Pradesh",
    Rural_Oct_16_Index_Final: 137.5,
    Rural_Oct_17_Index_Provisional: 143,
    Rural_Inflation_Rate_in_percentage: 4,
    Urban_Oct_16_Index_Final: 131.7,
    Urban_Oct_17_Index_Provisional: 135.6,
    Urban_Inflation_Rate_in_percentage: 3,
    Combined_Oct_16_Index_Final: 135.4,
    Combined_Oct_17_Index_Provisional: 140.3,
    Combined_Inflation_Rate_in_percentage: 3.6,
    created_at: "2018-08-30T05:01:58.000Z",
    updated_at: "2018-08-30T05:01:58.000Z"
    }
]

И используя метод map, я хочу получить такой результат:

 [
   {
     y: 2.2,
     label: "Rural_Inflation_Rate_in_percentage"
    },
    {
   y: 128.2,
  label: "Urban_Oct_16_Index_Final"
  }
]

Когда я использую этот код:

     b.map do |el|
    { y: el['Rural_Inflation_Rate_in_percentage'], label: "Rural_Inflation_Rate_in_percentage" },
     { y: el['Rural_Inflation_Rate_in_percentage'], label: "Rural_Inflation_Rate_in_percentage" }
end

Я получаю эту ошибку при удалении запятой Я получаю один результат без ошибок.

Есть ли способ заставить эту работу использовать метод карты.

1 Ответ

0 голосов
/ 30 августа 2018
b.flat_map do |el|
  [{ y: el['Rural_Inflation_Rate_in_percentage'], label: "Rural_Inflation_Rate_in_percentage" },
     { y: el['Rural_Inflation_Rate_in_percentage'], label: "Rural_Inflation_Rate_in_percentage" }]
end
...