简体   繁体   English

用其他格式的javascript模拟json对象

[英]mock json object in some other format javascript

I have one variable with json object. 我有一个带有json对象的变量。

 var seriesData = [{
                        feederId: "TUR 112",
                        businessEventCode: "LowVoltage",
                        servicePointEventCount: 4
                    }, {
                        feederId: "TUR 112",
                        businessEventCode: "HighVoltage",
                        servicePointEventCount: 2
                    }, {
                        feederId: "ABC",
                        businessEventCode: "LowVoltage",
                        servicePointEventCount: 4
                    }, {
                        feederId: "ABC",
                        businessEventCode: "HighVoltage",
                        servicePointEventCount: 1
                    }];

I want to Mock this data into this json formet 我想将此数据模拟到此json格式中

var MockService= [{
                feederId: "TUR 112",
                servicePointEventLowCount: 4,
                servicePointEventHighCount: 2
            }, {
                feederId: "ABC",
                servicePointEventLowCount: 6,
                servicePointEventHighCount:3 
            }];

For that My code : 为此我的代码:

if (seriesData) {
                var mockdata= [];
                for (var i = 0; i < seriesData.length; i++) {
                    var data = {};
                    data.feederId = seriesData[i].feederId;
                    if (seriesData[i].businessEventCode == 'LowVoltage') {
                        data.servicePointEventLowCount = seriesData[i].servicePointEventCount;
                    } else {
                        data.servicePointEventHighCount = seriesData[i].servicePointEventCount;
                    }
                    mockdata.push(data);
                }
            }
                var seriesDataMock = mockdata;

I am getting response as - 我得到的回应是-

[{
            feederId: "TUR 112",
            servicePointEventLowCount: 4,
            },  {
                feederId: "TUR 112",
                servicePointEventHighCount: 2
            }, {
                feederId: "ABC",
                servicePointEventLowCount: 6,
            }, {
                feederId: "ABC",
                servicePointEventLowCount: 6,
            }];

But I want it to be like this-- 但我希望它像这样

 [{
                feederId: "TUR 112",
                servicePointEventLowCount: 4,
                servicePointEventHighCount: 2
            }, {
                feederId: "ABC",
                servicePointEventLowCount: 6,
                servicePointEventHighCount:3 
            }];

Combined values for feederID... feederID的组合值...

Please guide me if I m missing something. 如果我缺少任何东西,请指导我。

Thanks! 谢谢!

You set your Mockdata to an empty array, then you proceed to overwrite the same properties for each iteration. 您将Mockdata设置为空数组,然后继续为每次迭代覆盖相同的属性。 I think you want to append data objects for each iteration like this: 我认为您想为每次迭代添加数据对象,如下所示:

pseudo: 伪:

for (var i = 0; i < seriesData.length; i++) {
  var data = {};
  data.feederId = seriesData[i].feederId;
  Mockdata.push(data);
  ...
}

EDIT: I read your updated question and it seems like you want to merge each two sets into one? 编辑:我读了您的更新的问题,似乎您想将每两个集合合并为一个? An easy way would be to do this instead: 一个简单的方法是改为执行此操作:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM