因为没有输入循环

时间:2016-12-21 17:50:26

标签: arrays typescript

我在使用数组上的.entries来获取循环

中的索引和值时遇到了问题
ranks: any = {
    total: 100,    
    percentages: [
        {
            percentage: 33
        },
        {
            percentage: 33
        },
        {
            percentage: 34
        }
    ]
};

getMax(i: number){
    var max: number = 100;
    for (let [index,value] of this.ranks.percentages.entries()) {
        console.log(index, value.percentage);
        if(index !== i){
            max -= value.percentage;
        }
    }
    return max;
}

在这种情况下,永远不会记录控制台日志。我做了一个简单的例子,所以我必须遗漏一些明显的东西。

array = [
  { name:12 },
  { name:23 },
  { name:34 }
]

for (let [index, value] of array.entries()) {
  console.log(index, value.name);
}

我通常会尝试使用console.log来解决问题,但我不确定要记录什么或者如何使用断点,因为它会跳过它。

1 个答案:

答案 0 :(得分:2)

TS将for语句编译为

for (var _i = 0, _a = ranks.percentages.entries(); _i < _a.length; _i++) {
迭代器的

length未定义,因此for循环变为无操作。

换句话说,它似乎并不知道entries()正在产生一个可迭代的。您是否收到有关entries的编译错误?

如果您编译为ES6,则可以正常工作。

如果您只想让代码正常工作,那么只需将其重写为基本for循环。