У меня есть набор данных с множеством объектов, занимающих 4 свойства объекта следующим образом:D3, сортировать массив объектов на 2 свойства объекта
var dataset = [{
key: 0,
brand: "A",
value: 10,
size: 10
}, {
key: 1,
brand: "B",
value: 11,
size: 10
}, {
key: 2,
brand: "C",
value: 12,
size: 9
}, {
key: 3,
brand: "D",
value: 13,
size: 9
}, {
key: 4,
brand: "E",
value: 14,
size: 9
}, {
key: 5,
brand: "G",
value: 15,
size: 9
}, {
key: 6,
brand: "F",
value: 16,
size: 9
}, {
key: 7,
brand: "H",
value: 17,
size: 9
}, {
key: 8,
brand: "I",
value: 18,
size: 9
}, {
key: 9,
brand: "J",
value: 19,
size: 9
}, {
key: 10,
brand: "K",
value: 20,
size: 9
}];
Я затем построить график с D3, показывающий value
в виде горизонтальных линий и size
как пузыри, сидящие поверх линий (см. http://jsfiddle.net/G74Aq/4/).
Я добавил функцию сортировки для каждого из вышеуказанных свойств объекта, кроме свойства key
, которое используется для ключевой функции в сортировке. Это отлично работает при сортировке по имени и по значению, но когда я сортирую по размерам строки, а пузырьки сортируются по-разному. Обратите внимание, что это происходит только в том случае, если значение ключа увеличивается до 10, что говорит о проблемах с лексикографической сортировкой, которые, как я думал, можно обойти, добавив 0 перед каждым номером ключа ниже < 10 (что ничего не изменило).
Мой вопрос: почему разные элементы сортируются по-другому, хотя применяемые методы сортировки используют одну и ту же ключевую функцию? И, естественно, как я могу выровнять функции сортировки?
Это определенно сокращает код, но, похоже, не влияет на проблемы сортировки. Я обновил скрипку (http://jsfiddle.net/G74Aq/8/). Может быть, существует путаница между значением 'd.key' и индексом массива' i', используемым для определения положения x? – lve