javascript - 使用 vanilla javascript 复制 JS 对象

标签 javascript arrays json

我有以下响应数组,我需要将此对象数组转换为 json 格式,如以下输出,那么如何使用纯 JavaScript 将对象数组转换为 json 格式。

以下是回复

var data1=[{
       vesrion:v1,
       versionData:[{
            date:'2010',
            value:123
         },{
            date:'2011',
            value:135
         },{
            date:'2012',
            value:145
         }]
      },{
       vesrion:v2,
       versionData:[{
            date:'2010',
            value:223
         },{
            date:'2011',
            value:235
         },{
            date:'2012',
            value:245
         }]
      },{
       vesrion:v3,
       versionData:[{
            date:'2010',
            value:323
         },{
            date:'2011',
            value:335
         },{
            date:'2012',
            value:345
         }]
      }]

================================================== =========================== 所需的对象数组

[{
  date:'2010',
  data:[{
     version:v1,
     value:123
   },{
     version:v2,
     value:223
   },{
     version:v3,
     value:323
   }]
},{
   date:'2011',
  data:[{
     version:v1,
     value:135
   },{
     version:v2,
     value:235
   },{
     version:v3,
     value:335
   }]
},{
    date:'2012',
  data:[{
     version:v1,
     value:145
   },{
     version:v2,
     value:245
   },{
     version:v3,
     value:345
   }] 
}]

}

最佳答案

以下代码将为您提供与您想要的相同的结果:

function a7(data1) {
 var result = [];
 var aa = {};
 var count = data1.length;
 for (var i = 0; i < count; i++) {
  var versionData = data1[i].versionData;
  if (versionData && versionData.length > 0) {
   for (var j = 0; j < versionData.length; j++) {
    var donotAdd = false;
    result.forEach(function(arrayItem) {
     if (arrayItem.date == versionData[j].date)
      donotAdd = true;
    });
    if (!donotAdd) {
     var bb = {};
     aa["date"] = versionData[j].date;
     aa["data"] = [];
     bb["version"] = data1[i].vesrion;
     bb["value"] = versionData[j].value;
     aa["data"].push(JSON.parse(JSON.stringify(bb)));
     for (var p = i; p < count; p++) {
      for (q = 0; q < data1[p].versionData.length; q++) {
       if (data1[p].versionData[q].date == aa["date"] && data1[i].vesrion != data1[p].vesrion) {
        bb = {};
        bb["version"] = data1[p].vesrion;
        bb["value"] = data1[p].versionData[q].value;
        aa["data"].push(JSON.parse(JSON.stringify(bb)));
        break;
       }
      }
      if (p == count - 1) {
       result.push(JSON.parse(JSON.stringify(aa)));
       aa = {};
      }
     }
    }
   }
  }
 }
 return result;
}

关于javascript - 使用 vanilla javascript 复制 JS 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52062847/

相关文章:

Javascript按类名获取span的内部HTML文本

java - 从最小到最大的数字差异 - Java 数组

php - 来自匹配 mysql 列的多维数组

java - java中将二维数组写入文件

java - org.springframework.web.bind.MissingServletRequestParameterException异常

javascript - 如何在聊天时追踪好友的IP地址

javascript - 我想根据几个条件获取数组计数

javascript - 如何读取jsonp响应

javascript - 使用 Angular json + 基于环境在 head 标签中加载第三方 js

java - Spring MVC 中的日期序列化