【问题标题】:How to sort object by key through JSON file parsing in D3.js [duplicate]如何通过D3.js中的JSON文件解析按键对对象进行排序[重复]
【发布时间】: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:你是怎么把文件放到数组里的?

标签: javascript html json d3.js


【解决方案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 想要数字排序。
  • 我已经更新了我的答案,但这一切都取决于“数据”是否真的是我猜测的对象
猜你喜欢
  • 2020-12-04
  • 2014-07-09
  • 2011-03-14
  • 2012-04-04
  • 2021-11-17
  • 1970-01-01
  • 2018-02-02
  • 1970-01-01
  • 2018-02-18
相关资源
最近更新 更多