修改json对象并更改mock数据

Modified json object and change the mock data

本文关键字:mock 数据 json 对象 修改      更新时间:2023-09-26

转换:

var seriesData = [{
    feederId: "PTS113T",
    businessEventCode: "LowVoltage",
    servicePointEventCount: 6,
    startDayID: 20130812,
}, {
    feederId: "PTS113T",
    businessEventCode: "HighVoltage",
    servicePointEventCount: 2,
    startDayID: 20130812,
}, {
    feederId: "PTS113T",
    businessEventCode: "LowVoltage",
    servicePointEventCount: 7,
    startDayID: 20130814,
}, {
    feederId: "PTS113T",
    businessEventCode: "HighVoltage",
    servicePointEventCount: 5,
    startDayID: 20130815,
}];

进入此对象:

var seriesData = [{
    feederId: "PTS113T",
    servicePointEventLowCount: 6,
    servicePointEventHighCount: 2,
    startDayID: 20130812,
}, {
    feederId: "PTS113T",
    servicePointEventLowCount: 7,
    startDayID: 20130814,
}, {
    feederId: "PTS113T",
    servicePointEventHighCount: 5,
    startDayID: 20130815,
}];

如果startDayID相同或不同,我将基于它合并值。

我尝试过的:

if (seriesData) {
    var mockdata = [];
    for (var i = 0; i < seriesData.length; i += 2) {
        var data = {};
        if ((seriesData[i].startDayID) == (seriesData[i + 1].startDayID)) {
            data.feederId = seriesData[i].feederId;
            data.servicePointEventLowCount = seriesData[i].servicePointEventCount;
            data.servicePointEventHighCount = seriesData[i + 1].servicePointEventCount;
            data.startDayID = seriesData[i].startDayID;
         }
        mockdata.push(data);
    }

请引导我!!

一个更健壮、通用的解决方案:

var seriesData = [{
    feederId: "PTS113T",
    businessEventCode: "LowVoltage",
    servicePointEventCount: 6,
    startDayID: 20130812,
}, {
    feederId: "PTS113T",
    businessEventCode: "HighVoltage",
    servicePointEventCount: 2,
    startDayID: 20130812,
}, {
    feederId: "PTS113T",
    businessEventCode: "LowVoltage",
    servicePointEventCount: 7,
    startDayID: 20130814,
}, {
    feederId: "PTS113T",
    businessEventCode: "HighVoltage",
    servicePointEventCount: 5,
    startDayID: 20130815,
}];
var flag = true;
var mockData = [];
for(var i=0; i<seriesData.length; i++){
    for(var j=i+1; j<seriesData.length; j++){
        if(seriesData[i].startDayID === seriesData[j].startDayID){
            var newSeriesData = [];
            newSeriesData.feederId = seriesData[i].feederId;
            if(seriesData[i].servicePointEventCount > seriesData[j].servicePointEventCount){
                newSeriesData.servicePointEventLowCount = seriesData[j].servicePointEventCount;
                newSeriesData.servicePointEventHighCount = seriesData[i].servicePointEventCount;
            }
            else {
                newSeriesData.servicePointEventLowCount = seriesData[i].servicePointEventCount;
                newSeriesData.servicePointEventHighCount = seriesData[j].servicePointEventCount;
            }
            newSeriesData.startDayID = seriesData[i].startDayID;
            
            seriesData.splice(j, 1);
            flag = false;
            mockData.push(newSeriesData);
        }                      
        
    }
    
    if(flag)
        mockData.push(seriesData[i]); 
    
    flag = true;
}
//Checking resultant array by printing out values:
document.write("[");
for(var i=0; i<mockData.length; i++){
    document.write("{<br>");
    document.write("feederId: " + mockData[i].feederId + "<br>");
    if(mockData[i].servicePointEventCount === undefined){
        document.write("servicePointEventLowCount: " + mockData[i].servicePointEventLowCount + "<br>");
        document.write("servicePointEventHighCount: " +mockData[i].servicePointEventHighCount + "<br>");       
    }
    else {
        document.write("servicePointEventCount" +mockData[i].servicePointEventCount + "<br>"); 
    }
    document.write("startDayID" +mockData[i].startDayID + "<br>");
    document.write("}");
}
document.write("]<br>");

通过运行代码段检查结果数组。。

我就是这么做的:

if (seriesData) {
    var mockdata = [];
    for (var i = 0, j = 1; j < seriesData.length; i++, j++) {
        var data = {};
        if ((seriesData[j]) && (seriesData[i].startDayID) == (seriesData[j].startDayID)) {
            data.feederId = seriesData[i].feederId;
            data.servicePointEventLowCount = seriesData[i].servicePointEventCount;
            data.servicePointEventHighCount = seriesData[j].servicePointEventCount;
            data.startDayID = seriesData[i].startDayID;
            i++;
            j++;
        }
        else {
            data = seriesData[i];
        }
    mockdata.push(data);
    }
}

请考虑在为运行之前测试数组长度>=2。

在这个片段中测试它

// Code goes here
var seriesData = [{
    feederId: "PTS113T",
    businessEventCode: "LowVoltage",
    servicePointEventCount: 6,
    startDayID: 20130812,
}, {
    feederId: "PTS113T",
    businessEventCode: "HighVoltage",
    servicePointEventCount: 2,
    startDayID: 20130812,
}, {
    feederId: "PTS113T",
    businessEventCode: "LowVoltage",
    servicePointEventCount: 7,
    startDayID: 20130814,
}, {
    feederId: "PTS113T",
    businessEventCode: "HighVoltage",
    servicePointEventCount: 5,
    startDayID: 20130815,
}];
if (seriesData) {
    var mockdata = [];
    for (var i = 0, j = 1; i < seriesData.length; i++, j++) {
        var data = {};
        if ((seriesData[j]) && (seriesData[i].startDayID) == (seriesData[j].startDayID)) {
            data.feederId = seriesData[i].feederId;
            data.servicePointEventLowCount = seriesData[i].servicePointEventCount;
            data.servicePointEventHighCount = seriesData[j].servicePointEventCount;
            data.startDayID = seriesData[i].startDayID;
            i++;
            j++;
        }
        else {
            data = seriesData[i];
        }
    mockdata.push(data);
    }
    console.log(mockdata);
}