在此创建一个对象:
var versionsLegend={}, versionsCounter=1, currentVersionNum=0;
然后在循环中设置值 - 根据条件设置为零值currentVersionNum
或使用计数器versionCounter
问题在于,计数器按预期设置,但当条件为真且设置为0时,它将对象转换为数组并清除以前的数据。
for (var i = 0; i < success.data.data.length; i++) {
if (success.data.data[i][0].Items.selected) {
$scope.views.series.push(success.data.data[i][0].Items.id);
versionsLegend = {
[success.data.data[i][0].Items.id]: currentVersionNum
};
} else {
versionsLegend = {
[success.data.data[i][0].Items.id]: versionsCounter
};
versionsCounter++;
}
}
在此行之前的日志中:
versionsLegend={[success.data.data[i][0].Items.id]:currentVersionNum};
我得到Object { 12: 1 }
后Object [ <9 empty slots>, 0 ]
我省略了与代码问题部分无关的内容。
试图在对象键上使用.toString()
- 无济于事。
答案 0 :(得分:3)
执行versionsLegend={...};
将versionsLegend的值设置为新对象。
使用versionsLegend[key] = value
代替 - 在当前的versionsLegend对象上设置属性。