В большинстве современных браузеров существует примитивный тип данных символа , который можно использовать для создания перечисления. Это обеспечит безопасность типов перечисления, так как каждое значение символа гарантировано JavaScript уникальным, т.е. Symbol() != Symbol()
. Например:
const COLOR = Object.freeze({RED: Symbol(), BLUE: Symbol()});
Чтобы упростить отладку, вы можете добавить описание к значениям перечисления:
const COLOR = Object.freeze({RED: Symbol("RED"), BLUE: Symbol("BLUE")});
Вкл 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
Если он находится в Rails или если у вас определено to_proc , вы можете пойти немного короче чем решение @toholio:
arr = [{"fruit_id"=>"1"}, {"fruit_id"=>"2"}, {"fruit_id"=>"3"}]
out = arr.map(&:values).flatten # => ["1", "2", "3"]
Итак, вы хотите, чтобы каждый хэш был преобразован в его значения, а затем объединен со значениями из других хэшей?
in = [{"fruit_id"=>"1"}, {"fruit_id"=>"2"}, {"fruit_id"=>"3"}]
out = in.map{ |item| item.values }.flatten
out
тогда будет ["1", "2", "3"]
.
Это мало что изменит, но вы можете использовать map
:
x.map do |fruit|
fruit.each { |k,v| puts v }
end