Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 对于未输入的循环的类型_Arrays_Typescript - Fatal编程技术网

Arrays 对于未输入的循环的类型

Arrays 对于未输入的循环的类型,arrays,typescript,Arrays,Typescript,我在使用数组中的.entries来获取for of循环中的索引和值时遇到了一个问题 ranks: any = { total: 100, percentages: [ { percentage: 33 }, { percentage: 33 }, { percentage: 34 } ] }; g

我在使用数组中的.entries来获取for of循环中的索引和值时遇到了一个问题

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来解决这个问题,但我不确定应该记录什么或者如何使用断点,因为它跳过了它

TS将
for
语句编译为

for (var _i = 0, _a = ranks.percentages.entries(); _i < _a.length; _i++) {
for(var\u i=0,\u a=ranks.percentage.entries();\u i<\u a.length;\u i++){
迭代器的
length
未定义,因此for循环成为no-op

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

如果编译到ES6,这是可行的


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

TS将
for
语句编译为

for (var _i = 0, _a = ranks.percentages.entries(); _i < _a.length; _i++) {
for(var\u i=0,\u a=ranks.percentage.entries();\u i<\u a.length;\u i++){
迭代器的
length
未定义,因此for循环成为no-op

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

如果编译到ES6,这是可行的


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

看起来您可以将
entries
作为函数调用
this.ranks.percentage.entries()
。那些括号不应该被省略吗?你有没有试着把
for
循环放到
try…catch
里面。我认为它应该抛出适当的异常。当我不使用括号时,它抛出一个异常将getMax放入try-catch中,什么都没有被发现。我不熟悉你在里面的所有冒号。什么是
getMax(i:number)
应该是指?(vs
getMax(i)
)或
ranks:any=
(vs
ranks=
)您可以链接到该语法的文档吗?看起来您将
条目作为函数调用
this.ranks.percentrates.entries()
。那些括号不应该被省略吗?你有没有试着把
for
循环放到
try…catch
里面。我认为它应该抛出适当的异常。当我不使用括号时,它抛出一个异常将getMax放入try-catch中,什么都没有被发现。我不熟悉你在里面的所有冒号。什么是
getMax(i:number)
应该是什么意思?(vs
getMax(i)
)或
ranks:any=
(vs
ranks=
)你能链接到该语法的文档吗?刚刚学习了所有这些,并采取了你概述的确切步骤。在一段时间没有得到编译错误后,开始得到编译错误,wtf TS,切换到基本的for循环,一切正常。刚刚学习了所有这些,并采取了你概述的确切步骤。之后开始得到编译错误有一段时间,wtf TS切换到基本的for循环,一切正常