【发布时间】:2015-03-29 11:09:35
【问题描述】:
我一直在使用下面的代码来转换一个计数数组中的大量日期列表,然后我可以在一个简单的折线图中使用它。我遇到的问题是按年份和周数对值进行排序。当我有[{201501: 20},{201502: 20},{201451: 20},{201452: 20}] 之类的数据时,我需要按键名将数组排序为以下格式[{201451: 20},{201452: 20},{201501: 20},{201502: 20}]。他们我只是用_.values()丢弃了密钥
如何使用下划线对数组进行排序,我尝试了一些方法,但此时我很迷茫。
var graphData = _.chain(thisYearFiltered)
// map each string like '2014-01-01 00:00:00' using moment.js to the ISO Week. ISO weeks are used because they run Monday to Sunday
.map(function(date){
return moment(date, "YYYY-MM-DD HH:mm:ss").isoWeekYear() + moment(date, "YYYY-MM-DD HH:mm:ss").isoWeek();
})
// Manipulate weeks numbers [201423,201423,201423,201423,201424] into a count for each like [{201423:4 },{201424:1}]
.countBy(function(num) {
//console.log(num);
return num;
})
// Pull out the values of the objects and discard the week number. [{23:4 },{24:1}] to [4,1]
.values()
.value();
我知道这一切都可以用下划线来实现,但我已经用这个碰了壁,所以欢迎任何建议。
我已经查看了_.sortBy(),但这似乎期望一个命名键进行排序,在我的情况下,键名都是不同的。我可以用第一个键做类似的事情吗?
【问题讨论】:
标签: javascript arrays sorting underscore.js momentjs