_.sortBy d3 图表的对象键值
_.sortBy object key value for d3 chart
我知道您不应该对 javascript 对象进行排序,但我需要对 d3 图表进行排序。我有一个对象,它有一个 FICO 分数范围的键和该范围内多少计数的值
var counts = {680-700: 30, 620-640: 41, 640-660: 24, 660-680: 10}
我需要 return 排序的对象,以便最小值的键排在第一位。
var desired_obj = { 620-640: 41, 640-660: 24, 660-680: 10, 680-700: 30 }
我尝试使用 _.sortBy 但它只有 return 值
_.sortBy(counts, function(val, key) { return val })
如评论中所述,JavaScript 对象 显式在键中没有顺序 。 (来源:)
如果您需要保证顺序,您必须将您的对象转换为数组。
您可以使用下划线轻松做到这一点:
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进行排序:
_.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}]"
我知道您不应该对 javascript 对象进行排序,但我需要对 d3 图表进行排序。我有一个对象,它有一个 FICO 分数范围的键和该范围内多少计数的值
var counts = {680-700: 30, 620-640: 41, 640-660: 24, 660-680: 10}
我需要 return 排序的对象,以便最小值的键排在第一位。
var desired_obj = { 620-640: 41, 640-660: 24, 660-680: 10, 680-700: 30 }
我尝试使用 _.sortBy 但它只有 return 值
_.sortBy(counts, function(val, key) { return val })
如评论中所述,JavaScript 对象 显式在键中没有顺序 。 (来源:)
如果您需要保证顺序,您必须将您的对象转换为数组。 您可以使用下划线轻松做到这一点:
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进行排序:
_.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}]"