_.sortBy d3图表的对象键值

时间:2015-01-14 18:20:09

标签: javascript d3.js underscore.js

我知道你不应该对javascript对象进行排序,但我需要一个d3图表。我有一个对象,其中包含FICO得分范围的关键字以及该范围内有多少得分的值

var counts = {680-700: 30, 620-640: 41, 640-660: 24, 660-680: 10}

我需要返回一个已排序的对象,以便最低值键出现。

var desired_obj = { 620-640: 41, 640-660: 24, 660-680: 10, 680-700: 30  }

我尝试使用_.sortBy,但它只返回值

 _.sortBy(counts, function(val, key) { return val })

1 个答案:

答案 0 :(得分:0)

正如评论中所讨论的,JavaScript对象表达式在键中没有订单。 (来源:https://stackoverflow.com/a/5525820/1007263

如果您需要确保订单,则必须将对象转换为数组。 您可以使用下划线轻松完成此操作:

a = {a:1, b:3, c:2}
_.map(a, function(value, key) { return {key: key, value: value} })
// [{"key":"a","value":1},{"key":"b","value":3},{"key":"c","value":2}]

您可以在映射后使用链进行排序:

_.chain(a).map(function(value, key) { return {key: key, value: value} }).sortBy('value').value()
//"[{"key":"a","value":1},{"key":"c","value":2},{"key":"b","value":3}]"