2016-05-17 30 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++)

變化的循環,它應該工作。

相關問題