当前位置:  开发笔记 > 编程语言 > 正文

d3.nest将键转换为字符串值

如何解决《d3.nest将键转换为字符串值》经验,为你挑选了1个好方法。

我在d3中有以下代码

const weeksOfYear = d3.nest()
 .key(d => d.dateObj.week())
 .sortKeys(d3.ascending)
 .entries(pics);

d.dateObj属性是Moment.js对象.该.week()方法返回一个数字.

有些人d3.nest()把它变成了一个字符串值,因此我按字母顺序排序应该是一个数字顺序.即,我的输出是:

1
10
11
12
13
2
20
21
22
23
...

虽然我想要它订购 1,2,3,4...

我还没有在文档中找到这个技巧.



1> altocumulus..:

分析

d3.nest()没有内部使用的d3.map()建筑嵌套结构时.并且,正如文档所述d3.map():

密钥被强制转换为字符串.

通过强制keyValue转换为字符串来构建嵌套结构时,会明确地处理这个问题:

if (values = valuesByKey.get(keyValue = key(value = array[i]) + "")) {

d3.ascending在比较之前,D3的比较器不会将字符串转换为数字.要对键进行数字比较,您需要包装此比较器并事先进行转换:

const weeksOfYear = d3.nest()
 .key(d => d.dateObj.week())
 .sortKeys((a, b) => d3.ascending(+a, +b))
 .entries(pics);

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有