2016-09-08 3 views
0

Я просто изучаю JS, и мне нужно написать программу, которая проверяет, содержит ли строка в первом элементе массива все буквы строки во втором элементе массива.indexOf игнорирует второй символ в массиве

Я сделал такой код:

function mutation(arr) {mutation: { 
    var lowerCaseStringOne = arr[0].toLowerCase(); 
    var lowerCaseStringTwo = arr[1].toLowerCase(); 

    if (lowerCaseStringOne === lowerCaseStringTwo) { 
     console.log(true); 
     break mutation; 
    } 

    var newArray = []; 

    for (var i = 0; i < lowerCaseStringTwo.length; i++){ 
     console.log(lowerCaseStringTwo[i]); 
     if (lowerCaseStringTwo.indexOf(lowerCaseStringOne[i]) > 0) { 
      newArray.push(lowerCaseStringTwo[i]); 
      console.log('---'); 
     } 
    } 

    var result = newArray.join(""); 

    if (result === lowerCaseStringTwo) { 
     console.log(true); 
    } else { 
     console.log(false); 
    } 
} 
} 

mutation(["Mary", "Aarmy"]); 

Я думаю, что это очень сложно, но я не могу решить эту проблему - функция «IndexOf», кажется, игнорирует второй символ в моем цикле - loggs это в консоли, но не толкает в массив. Я думал, это может случиться, потому что первая и вторая буквы похожи, но это не так. Независимо от того, что письмо, оно просто игнорирует его.

+0

Я только что видел эту ошибку: 'если (lowerCaseStringTwo.indexOf (lowerCaseStringOne [я])> 0)' это должно быть 'если (lowerCaseStringOne. indexOf (lowerCaseStringTwo [i])> 0) ' –

+0

Теперь он игнорирует букву 'm'. Я пробовал так много способов его решения, поэтому у меня было больше ошибок ... –

+0

извините, что моя вина еще не видела другую ошибку. Вам нужно '> -1', поскольку 0 - индекс первой буквы –

ответ

0

indexOf() вернет 0 для буквы «a» в вашем примере, поскольку первый экземпляр находится в позиции 0 в массиве.

Вы должны использовать "> = 0"