【发布时间】:2016-11-24 11:02:40
【问题描述】:
我希望合并对象“userName”中“year”键的值。
我有以下对象数组
userName=[{
loginName:'jimmy',
deviation:[{dates:[20150222,20150223,20150224,20150225], type:'vacation'}],
year:'2015'
},
{
loginName:'jimmy',
deviation:[{dates:[20150322,20150323,20150324,20150325], type:'sick'}],
year:'2016'
},
{
loginName:'chloe',
deviation:[{dates:[20150222,20150221,20150224,20150225], type:'national free day'}],
year:'2016'
},
];
通过使用此功能,我可以根据登录名对偏差日期进行排序。所以在这种情况下,用户 'jimmy' 将只显示一次,但所有的偏差日期和类型都会组合在一起。然而,键 'year' 的值仅继承第一个值并保持不变。如何合并键'year',以便通过修改我当前的功能,对于用户'jimmy' year 将显示'2015, 2016':
var mergedUsername = [];
userName.forEach(function(deviation) {
var existing = mergedUsername.filter(function(v, i) {
return v.loginName == deviation.loginName;
});
if(existing.length) {
var existingIndex = mergedUsername.indexOf(existing[0]);
mergedUsername[existingIndex].deviation = mergedUsername[existingIndex].deviation.concat(deviation.deviation);
} else {
if(typeof deviation.deviation == 'string')
deviation.deviation = [deviation.deviation];
mergedUsername.push(deviation);
}
});
提前致谢!
【问题讨论】:
-
请添加想要的结果。
标签: javascript object key concatenation