Сгладьте массив хешей в рубине

В большинстве современных браузеров существует примитивный тип данных символа , который можно использовать для создания перечисления. Это обеспечит безопасность типов перечисления, так как каждое значение символа гарантировано JavaScript уникальным, т.е. Symbol() != Symbol(). Например:

const COLOR = Object.freeze({RED: Symbol(), BLUE: Symbol()});

Чтобы упростить отладку, вы можете добавить описание к значениям перечисления:

const COLOR = Object.freeze({RED: Symbol("RED"), BLUE: Symbol("BLUE")});

Демо Plunker

Вкл GitHub вы можете найти оболочку, которая упрощает код, необходимый для инициализации перечисления:

const color = new Enum("RED", "BLUE")

color.RED.toString() // Symbol(RED)
color.getName(color.RED) // RED
color.size // 2
color.values() // Symbol(RED), Symbol(BLUE)
color.toString() // RED,BLUE

18
задан aronchick 24 June 2009 в 01:10
поделиться

4 ответа

Если он находится в Rails или если у вас определено to_proc , вы можете пойти немного короче чем решение @toholio:

arr = [{"fruit_id"=>"1"}, {"fruit_id"=>"2"}, {"fruit_id"=>"3"}]
out = arr.map(&:values).flatten # => ["1", "2", "3"]
37
ответ дан 30 November 2019 в 05:43
поделиться

Итак, вы хотите, чтобы каждый хэш был преобразован в его значения, а затем объединен со значениями из других хэшей?

in = [{"fruit_id"=>"1"}, {"fruit_id"=>"2"}, {"fruit_id"=>"3"}]
out = in.map{ |item| item.values }.flatten

out тогда будет ["1", "2", "3"] .

19
ответ дан 30 November 2019 в 05:43
поделиться

Это мало что изменит, но вы можете использовать map :

x.map do |fruit|
    fruit.each { |k,v| puts v }
end
0
ответ дан 30 November 2019 в 05:43
поделиться
a.inject([]) { |mem,obj| mem += obj.values }
4
ответ дан 30 November 2019 в 05:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: