我有一个日期和对应的词典
dates = {'01.02.2014':'2', '02.03.2014':'5', '10.03.2014':'9', '20.06.2014':'7'}
我需要的是所有月份的新词典"日期"字典。
Feb = {'01.02.2014':'2'};
March = {'02.03.2014':'5', '10.03.2014':'9'};
Jun = {'20.06.2014':'7'};
有没有一种快捷的方法来实现这一目标?
非常感谢,
最好的问候
琳达
答案 0 :(得分:2)
与其他人一样,循环遍历对象并构建一个新对象:
var dates = {'01.02.2014':'2', '02.03.2014':'5', '10.03.2014':'9', '20.06.2014':'7'}
var months = {'01':'Jan','02':'Feb','03':'Mar','04':'Apr','05':'May','06':'Jun',
'07':'Jul','08':'Aug','09':'Sep','10':'Oct','11':'Nov','12':'Dec'};
var dates2 = {};
// Requires ES5
Object.keys(dates).forEach(function(key) {
var obj = {};
obj[key] = dates[key];
dates2[months[key.split('.')[1]]] = obj;
})
console.log(dates2);
或者为了更好的兼容性(可能还有速度),你可以使用普通的for..in循环:
for (var key in dates) {
var obj = {};
obj[key] = dates[key];
dates2[months[key.split('.')[1]]] = obj;
}
答案 1 :(得分:1)
没有特殊技巧来快速完成此任务。只需遍历您的数据结构并将元素放在另一个数据结构中。
答案 2 :(得分:0)
var dates = {'01.02.2014':'2', '02.03.2014':'5', '10.03.2014':'9'};
// Create a map to translate numbers to months
var map = {
'01': 'Jan',
'02': 'Feb',
'03': 'Mar' // etc...
};
var ret = {};
for(var key in dates){
var monthKey = key.split('.')[1], // Get month
translated = map[monthKey], // Translate to text
kvp = {};
kvp[key] = dates[key];
if(!ret[translated]) // Add new month prop if not exist
ret[translated] = kvp;
else // Add prop to existing month
ret[translated][key] = dates[key];
}
console.log(ret);