公司同事遇到个很奇葩的需求,需要把下图name键值相同重新组装json并且合并name键值相同的为数组,他实在搞不出来叫我帮忙,这种需求也确实奇葩,但我还是搞出来了,当然我觉得有更好的方法:
需要的效果如下:(肯定有更好的方法解决还请各位大佬分享一下)
贴代码吧,也不知道咋说!
let data_all = {};
for(key in data){
let name = null;
for(res in data[key]){
if(res == 'name'){
// 临时存储键名
name = data[key][res];
// 判断重新组装json里是否有该name值,如果有并且不是数组就把该键名键值改为数组并
if((data_all[name] != undefined) && !Array.isArray(data_all[name])){
data_all[name] = [data_all[name]];
}
}
if(res == 'value'){
// 通过临时键名判断重新组装json里该键名是否数组
if(Array.isArray(data_all[name])){
data_all[name].push((data[key][res]));
}else{
data_all[name] = data[key][res];
}
}
}
}