2016-07-31 3 views
-1

Почему мое решение не работает для этой задачи? (Ссылка на вызов: https://www.freecodecamp.com/challenges/mutations)FreeCodeCamp Javascript Challenge [Mutation] Что не так с моим решением?

function mutation(arr) { 
    var first = arr[0].toLowerCase(); 
    var second = arr[1].toLowerCase(); 
    for (var i = 0; i < first.length; i++) { 
    if (first.indexOf(second[i]) === -1) { 
     return false; 
    } else { 
     return true; 
    } 
    } 
} 

mutation(["hello", "hey"]); 
+1

Вы не собираетесь сделать меня Google, вы? В чем проблема, каково ожидаемое поведение вашего кода и каково его фактическое поведение? –

+0

Вы вызываете функцию где-то и используете возвращаемые значения? – xCodeZone

+0

Да. Вызов: мутация ([«привет», «эй»]); – veron

ответ

0

Не нужно петлю, потому что ваш размер массива будет 2 равно:

function mutation(arr) { 
 

 

 
    return arr[1].toLowerCase().split('').map((ch)=>arr[0].toLowerCase().indexOf(ch)>=0).every((e)=>e) 
 
} 
 

 
console.log(
 
    mutation(["hello","Hello"]) 
 
) 
 
console.log(
 
    mutation(["Alien", "line"]) 
 
) 
 
console.log(
 
    mutation(["hello","hey"]) 
 
)

Объясните код с mutation(["Alien", "line"]) как в примере:

  • => раскол line в массив ['l','i','n','e']

  • ['l','i','n','e'].map((ch)=>arr[0].toLowerCase().indexOf(ch)>=0) для каждого символа, проверьте, если он существует на 1 elememt arr[0] ==> Результат будет [true,true,true,true]

  • Нанести и логики Оператор среди что результат [true,true,true,true].every((e)=>e) ==>true & true & true & true

  • результат верно

+0

Вам нужно '.every' здесь, а не' сокращение'. – georg

+0

Я обновляю ответ и объясняю свое решение .. это возможность узнать :) –

+0

@georg: Спасибо за напоминание .. ОБНОВЛЕНО! '.every ((е) => е)' –

0

Вы должны здесь While Loop лучше for Loop:

function mutation(arr) { 
 
    var j=0,first = arr[0].toLowerCase(),second = arr[1].toLowerCase(); 
 
    
 
    while(j<second.length && first.indexOf(second[j])>=0){ 
 
      j++; 
 
    } 
 
    return !(j===second.length-1) 
 
    
 
} 
 
    //-------- SAMPLES 
 
console.log(
 
    mutation(["hello", "Hello"]) 
 
) 
 

 
console.log(
 
    mutation(["hello", "hey"]) 
 
) 
 

 
console.log(
 
    mutation(["Alien", "line"]) 
 
)

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