对象正在成为Javascript中的数组

时间:2018-01-03 16:39:18

标签: javascript

在此创建一个对象:

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() - 无济于事。

1 个答案:

答案 0 :(得分:3)

执行versionsLegend={...};将versionsLegend的值设置为新对象。

使用versionsLegend[key] = value代替 - 在当前的versionsLegend对象上设置属性。