循环中的json对象修改不起作用
json object modification within loop is not working
我从web服务返回了json对象。Web服务对象:
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,
}];
我想把那个对象修改成。。
我有startDayID
,对于每个startDayID
,businessEventCode: "LowVoltage"
或businessEventCode: "HighVoltage",
将有两个值或一个值
想要:
var seriesData = [{
feederId: "PTS113T",
servicePointEventLowCount: 6,
servicePointEventHighCount: 2,
startDayID: 20130812,
}, {
feederId: "PTS113T",
servicePointEventLowCount: 7,
startDayID: 20130814,
}, {
feederId: "PTS113T",
servicePointEventHighCount: 5,
startDayID: 20130815,
}];
我在做什么:
if (seriesData) {
var mockdata = [];
for (var i = 0; i < seriesData.length; i += 2) {
var data = {};
//data.feederId = seriesData[i].feederId;
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;
} else {
data.feederId = seriesData[i].feederId;
data.startDayID = seriesData[i].startDayID;
if (seriesData[i].businessEventCode == 'LowVoltage') {
data.servicePointEventLowCount = seriesData[i].servicePointEventCount;
data.servicePointEventHighCount = 0;
} else {
data.servicePointEventHighCount = seriesData[i].servicePointEventCount;
data.servicePointEventLowCount = 0;
}
}
mockdata.push(data);
}
试试这个。
var mockdata = [];
// for check whether startDayID exist
//and temporary storage for data relative key(startDayID)
var mockDataKeyMap ={};
for (var i = 0; i < seriesData.length; i ++) {
var item = seriesData[i];
var key = item.startDayID;
var data = null;
if(!mockDataKeyMap[key]){
// startDayID do not exist create new
data = {};
// save for get after (below else sentence)
mockDataKeyMap[key] = data;
// push into
mockdata.push(data);
// set default info
data.feederId = item.feederId;
data.startDayID = item.startDayID;
}else{
// if startDayID exist get data from map
data= mockDataKeyMap[key];
}
if (item.businessEventCode === 'LowVoltage') {
data.servicePointEventLowCount = item.servicePointEventCount;
}
if (item.businessEventCode === 'HighVoltage') {
data.servicePointEventHighCount = item.servicePointEventCount;
}
}
使用"i+=2"
是非常危险的
您的seriesData
总是没有两个数据LowVoltage
和HighVoltage
。
然后检查所有数据i++
然后只检查密钥是否已经存在
try:
for (var i = 0; i < seriesData.length-1; i += 2) {
根据上一次运行的循环,您将不会有seriesData[i + 1].startDayID
在处理时更好地检查此条件。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 修改对象的原型不起作用
- 使用 Javascript 对 SVG 进行动态修改不起作用
- 使用 javascript 修改 svg 属性不起作用
- Jquery - css 后台修改不起作用
- 修改整个对象时,嵌套 JSON 对象的 JavaScript 导航不起作用
- 修改元素属性后,Jquery 选择器不起作用
- 循环中的json对象修改不起作用
- PhoneGap/Cordova没有监听401,将http响应代码修改为200不起作用
- 使用jQuery修改CSS类的名称-在加载时不起作用
- 当绑定项是对象并动态修改时,单向绑定不起作用
- 如果没有$scope.$apply,修改作用域将不起作用
- 图像滑块修改后不起作用
- “修改”交互不起作用