2016-05-17 14 views
0

In dem folgenden Code warum wird ich wie eine Zeichenfolge behandelt? Ich muss es um 1 multiplizieren, um es in eine Zahl umzuwandeln.Warum behandelt Javascript Variablen als String?

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

Versuchen 1 + I statt I + 1 – galvan

+0

@galvan Die Reihenfolge der Operanden wird das nicht ändern Ergebnis. Wenn beide eine Zeichenkette sind, führt '+' eine Verkettung durch. –

+0

warum nicht 'Array.indexOf'? – IMTheNachoMan

Antwort

1

nur ein normales for-Schleife verwenden, und man wird nicht dieses Problem hat:

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

das Array unter der Annahme ist ein Array ...

das Problem ist for(i in array), die das Array als ein Objekt behandelt, und die Indizes als Strings zurück:

Änderung in der Schleife, und es sollte for(;i<array.length;i++) Arbeit.

Verwandte Themen