gpt4 book ai didi

d3.js - d3.nest 将键转为字符串值

转载 作者:行者123 更新时间:2023-12-02 00:48:57 31 4
gpt4 key购买 nike

我在 d3 中有以下代码

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

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

Somehwere 在 d3.nest() 中,它将键转换为字符串值,因此我按字母顺序排序应该是数字顺序。即,我的输出是:

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

而我希望它按顺序 1,2,3,4...

我还没有在文档中找到诀窍。

最佳答案

分析

d3.nest() 在内部执行 make used3.map()在构建嵌套结构时。而且,正如关于 d3.map() 的文档中所说:

  • Keys are coerced to strings.

这在通过强制 keyValue 构建嵌套结构时得到明确处理。到一个字符串:

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

解决方案

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

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

关于d3.js - d3.nest 将键转为字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41579465/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com