我知道你不应该对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 })
答案 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}]"