转换:
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);
}
请指导我!!
答案 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在此代码段中测试
// 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;
答案 1 :(得分:1)
更强大和通用的解决方案:
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;
通过运行代码段检查生成的数组..