Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3根据2个对象属性对对象数组进行排序_Javascript_Sorting_D3.js - Fatal编程技术网

Javascript D3根据2个对象属性对对象数组进行排序

Javascript D3根据2个对象属性对对象数组进行排序,javascript,sorting,d3.js,Javascript,Sorting,D3.js,我有一个数据集,其中包含一个包含4个对象属性的对象数组,如下所示: var数据集=[{ 关键字:0, 品牌:“A”, 数值:10, 尺码:10 }, { 重点:1,, 品牌:“B”, 价值:11, 尺码:10 }, { 重点:二,, 品牌:“C”, 数值:12, 尺码:9 }, { 重点:三,, 品牌:“D”, 价值:13, 尺码:9 }, { 重点:四,, 品牌:“E”, 价值:14, 尺码:9 }, { 重点:五,, 品牌:“G”, 价值:15, 尺码:9 }, { 重点:6,, 品牌:“F

我有一个数据集,其中包含一个包含4个对象属性的对象数组,如下所示:

var数据集=[{
关键字:0,
品牌:“A”,
数值:10,
尺码:10
}, {
重点:1,,
品牌:“B”,
价值:11,
尺码:10
}, {
重点:二,,
品牌:“C”,
数值:12,
尺码:9
}, {
重点:三,,
品牌:“D”,
价值:13,
尺码:9
}, {
重点:四,,
品牌:“E”,
价值:14,
尺码:9
}, {
重点:五,,
品牌:“G”,
价值:15,
尺码:9
}, {
重点:6,,
品牌:“F”,
价值:16,
尺码:9
}, {
关键:7,
品牌:“H”,
价值:17,
尺码:9
}, {
关键词:8,
品牌:“我”,
价值:18,
尺码:9
}, {
关键词:9,
品牌:“J”,
价值:19,
尺码:9
}, {
关键词:10,
品牌:“K”,
价值:20,
尺码:9
}];
然后,我用D3构建了一个图表,其中,
显示为水平线,
大小
显示为位于线顶部的气泡(请参见)


除了用于排序中的键函数的
key
属性之外,我还为上述每个对象属性添加了一个排序函数。这在按名称和值排序时效果很好,但当我按大小排序时,行和气泡的排序会有所不同。请注意,只有当键值增加到10时才会发生这种情况,这表明存在字典排序问题,我认为可以通过在下面的每个键值前面添加0来绕过这一问题尝试强制它按数值而不是字符串排序。一元
+
运算符可以实现这一点

function getSortFunction(propertyName) {
    return function(a, b) {
        return +(a[propertyName]) > +(b[propertyName]);
    }
}

dataset.sort(getSortFunction("size"));

它确实减少了代码,但似乎不会影响排序问题。我已经更新了小提琴()。是否在
d.key
值和用于确定x位置的数组索引
i
i之间存在混淆?