修改了json对象并更改了模拟数据

时间:2014-09-26 09:28:14

标签: javascript arrays json for-loop

转换:

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);
    }

请指导我!!

2 个答案:

答案 0 :(得分:1)

我将如何做:

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);
    }
}

在运行for。

之前,请考虑测试数组长度&gt; = 2

在此代码段中测试

&#13;
&#13;
// 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);
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

更强大和通用的解决方案:

&#13;
&#13;
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>");
&#13;
&#13;
&#13;

通过运行代码段检查生成的数组..