ruby哈希到javascript哈希
我有一个ruby哈希,我想将其转换为特定的javascript哈希。ruby哈希到javascript哈希,javascript,ruby-on-rails,hash,Javascript,Ruby On Rails,Hash,我有一个ruby哈希,我想将其转换为特定的javascript哈希。 这是ruby哈希keyval { "Former Administration / Neutral"=>24, "Media Personality / P"=>2, "Journalist / Neutral"=>32, "Consultant / Neutral"=>2, ... "Journalist / P"=&
这是ruby哈希
keyval
{
"Former Administration / Neutral"=>24,
"Media Personality / P"=>2,
"Journalist / Neutral"=>32,
"Consultant / Neutral"=>2,
...
"Journalist / P"=>11,
"Expert / Neutral"=>1,
"Activist / Neutral"=>15
}
转换为javascript哈希
{data: "Former Administration / Neutral", frequency: (24) },
{data: "Media Personality / P", frequency: (2) },
{data: "Journalist / Neutral", frequency: (32) },
{data: "Consultant / Neutral", frequency: (2) },
...
{data: "Journalist / P", frequency: (11) },
{data: "Expert / Neutral", frequency: (1) },
{data: "Activist / Neutral", frequency: (15) }
尝试
var obj = {};
for (var i = 0; i < <%= keyval.size %>; i++) {
obj["data"] = <%= keyval.keys[i] %>;
obj["frequency"] = '(' + <%= @keyval.values[i] %> + ')';
}
var obj={};
对于(变量i=0;i<;i++){
obj[“数据”]=;
obj[“频率”]='('++');
}
但是循环不起作用,obj
返回ruby散列的第一个元素frequency=24
,并且没有逃逸以前管理中的空间。为什么?试试这个:
var data = [];
<% for i in 0..@keyval.size-1 { %>
data.push({});
data[<%= i %>]["data"] = <%= @keyval.keys[i] %>;
data[<%= i %>]["frequency"] = '(' + <%= @keyval.values[i] %> + ')';
<% } %>
var数据=[];
data.push({});
数据[][“数据”]=;
数据[][“频率”]='('+');
因此,您将获得这些对象的数组。您可以使用map
和join
keyval.map{|k,v| "{data: \"#{k}\", frequency: (#{v}) }" }.join(",\r\n")
在本例中,map方法提供键为k
,值为v
。有一个to_json方法,用于将ruby哈希和数组转换为json对象。您可以使用第一个散列创建一个散列数组,然后对其调用_json。然后,您将在ruby中执行所有数据操作,最后将格式转换为json
hash = {
"Former Administration / Neutral"=>24,
"Media Personality / P"=>2,
"Journalist / Neutral"=>32,
"Consultant / Neutral"=>2,
"Journalist / P"=>11,
"Expert / Neutral"=>1,
"Activist / Neutral"=>15
}
arr = []
hash1.each do |k,v|
arr << {:data => k, :frequency => v}
end
arr.to_json
你说过你想要一个“javascript散列”,但最后你的问题看起来是一个没有方括号的数组。我的结果是一个有效的json对象表示,它是一个对象数组。我认为这正是您想要的。这肯定不可行,因为i
是一个JS变量,但您试图在RoR代码中使用它。在循环的每个周期中,您都在覆盖相同的对象。你需要一个Ruby循环,而不是JavaScript循环。这很有帮助,谢谢。只要改变一些东西,它就可以工作var data=[];data.push({});数据[][“数据”]=“”;数据[][“频率”]='('+');控制台日志(数据)代码>但是正在每个元素之前添加对象
<代码>[Object{data=“前任行政当局/中立”,frequency=“(24)”},Object{data=“媒体个性/P”,frequency=“(2)”},…
如何摆脱它?如何摆脱“
并拥有”[{data:“记者/P”,频率:11},{data:“活动家/中立”,频率:15},{data:“前任行政当局/中立”,“频率”:24},{data:“专家/中立”,频率:1},{data:“记者/中立”,频率:32},{data:“顾问/中立”,频率:2},{data:“媒体个性/P”,频率:2}]“
使用arr.to_json.html\u safe
完成了工作。有错误不喜欢”
。错误:syntaxer:syntaxer错误{“前任政府/中立”=44,“Me
"[{"data":"Journalist / P","frequency":11},{"data":"Activist / Neutral","frequency":15},{"data":"Former Administration / Neutral","frequency":24},{"data":"Expert / Neutral","frequency":1},{"data":"Journalist / Neutral","frequency":32},{"data":"Consultant / Neutral","frequency":2},{"data":"Media Personality / P","frequency":2}]"