如何通过D3.js中的JSON文件解析按键对对象进行排序[重复]

Posted

技术标签:

【中文标题】如何通过D3.js中的JSON文件解析按键对对象进行排序[重复]【英文标题】:How to sort object by key through JSON file parsing in D3.js [duplicate] 【发布时间】:2015-12-12 09:38:06 【问题描述】:

我有一个如下所示的 JSON 文件 (myfile.json):

"3":["c","d"], "3.5":["j","k"], "1.5":["a","b"], "2.5":["x","y"] 

我想要做什么打开文件并使用 d3.js 文件打开对其进行排序。

 d3.json('myfile.json',function(err,datafull)
    for (var myval in datafull) 
        console.log(myval);
    
  );

现在,如果我这样做,console.log 将以未排序的方式打印它们的键。 如何对文件进行排序?

这是不同的问题,因为它涉及文件解析。

【问题讨论】:

将每一项放入一个数组中,然后对数组进行排序。或者使用Object.keys() 获取键数组,对that 数组进行排序,然后使用它按排序顺序访问原始对象的属性。但是您不能对(非数组)对象进行排序。 @nnnnnn:你是怎么把文件放到数组里的? 【参考方案1】:

要对对象键进行排序,您可以使用 Object.keys() 方法,该方法给出给定对象键的数组,然后您可以使用数组 sort() 方法。

d3.json('myfile.json',function(err,data)
  keys = Object.keys(data),
  i, len = keys.length;
  keys.sort(function(a, b) 
    return a - b;
  );

  for (i = 0; i < len; i++)
  
    var a = keys[i];
    console.log(a + ':' + data[a]);
  

见http://jsfiddle.net/sjmcpherso/mvrWb/234/

【讨论】:

如何将myfile.json 存储到myObj 你的输出看起来已经是一个对象了,不是这样吗? 我需要从输入的 JSON 文件开始。 @sjm - 请注意,没有比较器回调的 .sort() 将进行词法排序,我怀疑 OP 想要数字排序。 我已经更新了我的答案,但这一切都取决于“数据”是否真的是我猜测的对象

以上是关于如何通过D3.js中的JSON文件解析按键对对象进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 D3.js 解析上传的 CSV 文件

在 d3.js 中导入 json 文件

d3.js & json - 简单的示例代码?

如何在PHP中解析json

如何通过node.js中的JSONStream模块解析一个大的、换行符分隔的JSON文件?

d3.js Faux-3D Arcs - Uncaught typeerror:无法读取未定义的属性“对象”