2016-05-17 67 views
0

在下面的代码中,为什么我被当作字符串对待?我必须将其倍数为1才能将其转换回数字。为什么javascript将字符串视为变量?

getPositionInArray(value, array) { 
    console.log('array = ', array); 

    let i = 0; // why is i a string? 
    for (i in array) { 
     if (array[i].toLowerCase() === value) { 
     let positionOnUI = i * 1 + 1; // why can't I use i + 1? 
     return positionOnUI; 
     } 
    } 
    return null; 
    } 
+1

尝试1 +我,而不是我+ 1 – galvan

+0

@galvan操作数的顺序不会改变结果。如果其中任何一个是字符串,'+'会执行连接。 –

+0

为什么不'Array.indexOf'? – IMTheNachoMan

回答

1

只需使用一个正常的循环,你不会有这个问题:

Working Example

function getPositionInArray (value, array) { 
    console.log('array = ', array); 
    for (let i = 0; i < array.length; i++) { 
    if (array[i].toLowerCase() === value) { 
     let positionOnUI = i // why can't I use i + 1? 
     return positionOnUI; 
    } 
    } 
    return null; 
} 
1

假设阵列是...

问题是for(i in array)是把数组作为一个对象,并返回指标为字符串:在for(;i<array.length;i++)

变化的循环,它应该工作。

相关问题