js数据结构转换

如何用ES5将形如以下的数据结构:

[{obj0:"2016-12-01",obj1:"交通事故",obj2:"218"},{obj0:"2016-12-01",obj1:"医疗事故",obj2:"1"},{obj0:"2016-12-02",obj1:"交通事故",obj2:"200"},{obj0:"2016-12-02",obj1:"医疗事故",obj2:"5"}]

转化成

[{'2016-12-01':['交通事故':'218','医疗事故':'1']},{'2016-12-02':['交通事故':'200','医疗事故':'5']}]

这样的结构呢?

阅读 2.8k
3 个回答

题主你最后的那个结构怪怪的

var data = [{obj0:"2016-12-01",obj1:"交通事故",obj2:"218"},{obj0:"2016-12-01",obj1:"医疗事故",obj2:"1"},{obj0:"2016-12-02",obj1:"交通事故",obj2:"200"},{obj0:"2016-12-02",obj1:"医疗事故",obj2:"5"}];
var res = {};//字典
data.forEach(function(item){
  if(!res[item.obj0]){//如果不存在对应的键值对,则创建一个
    res[item.obj0]=[];
   }
   var obj = {}; 
   obj[item.obj1] = item.obj2;
   res[item.obj0].push(obj);
});

这样就能得到一个对象,跟你要的结构差不多了,后面转化我就不写了。

let data = [{obj0:"2016-12-01",obj1:"交通事故",obj2:"218"},{obj0:"2016-12-01",obj1:"医疗事故",obj2:"1"},{obj0:"2016-12-02",obj1:"交通事故",obj2:"200"},{obj0:"2016-12-02",obj1:"医疗事故",obj2:"5"}],
    res = {};
for (let item of data) {
    let obj = res[item.obj0] || {};
    obj[item.obj1] = item.obj2;
    res[item.obj0] = obj;
}
console.log(JSON.stringify(res))
// {"2016-12-01":{"交通事故":"218","医疗事故":"1"},"2016-12-02":{"交通事故":"200","医疗事故":"5"}}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题