我在使用数组上的.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来解决问题,但我不确定要记录什么或者如何使用断点,因为它会跳过它。
答案 0 :(得分:2)
TS将for
语句编译为
for (var _i = 0, _a = ranks.percentages.entries(); _i < _a.length; _i++) {
迭代器的 length
未定义,因此for循环变为无操作。
换句话说,它似乎并不知道entries()
正在产生一个可迭代的。您是否收到有关entries
的编译错误?
如果您编译为ES6,则可以正常工作。
如果您只想让代码正常工作,那么只需将其重写为基本for循环。