我想将两个数组和两个常量值组合到一个json对象中。
我的数组:
arraywithperson = [阿尔弗雷多,詹姆斯,约翰,莎拉,弗拉基米尔]
arraywithduration = [1,5,3,1,4]
变量:
start_date = Date.today
父母= 1
columns
如何将数组与变量结合起来以获取json输出?
答案 0 :(得分:1)
您可以使用zip
并为此进行映射:
output = arraywithduration.zip(arraywithperson).map do |duration, person|
{
'person': person,
'start_date': start_date,
'duration': duration,
'parent': parent
}
end
{ 'data': output }
使用zip
,您可以将arraywithduration
的元素和arraywithperson
的元素合并到2个元素的数组中,并位于“主”数组中:
# [[1, "Alfredo"], [5, "James"], [3, "John"], [1, "Sarah"], [4, "Vladimir"]]
map
允许您遍历每个元素,并使用所需的键和值创建哈希:
# [{:person=>"Alfredo", :start_date=>"22.01.2020", :duration=>1, :parent=>1},
# {:person=>"James", :start_date=>"22.01.2020", :duration=>5, :parent=>1},
# {:person=>"John", :start_date=>"22.01.2020", :duration=>3, :parent=>1},
# {:person=>"Sarah", :start_date=>"22.01.2020", :duration=>1, :parent=>1},
# {:person=>"Vladimir", :start_date=>"22.01.2020", :duration=>4, :parent=>1}]
要获得预期输出中显示的开始日期,可以使用strftime
(这是一个字符串BTW):
start_date = Date.today.strftime('%d.%m.%Y')