2016-05-17 3 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

Try 1 + I вместо I + 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++) и он должен Работа.

Смежные вопросы