Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby哈希到javascript哈希_Javascript_Ruby On Rails_Hash - Fatal编程技术网

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哈希,我想将其转换为特定的javascript哈希。
这是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}]"