我有以下响应数组,我需要将此对象数组转换为 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/