如何通过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文件解析按键对对象进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章