# Mutations Help Please! :/

**URL:** <https://forum.freecodecamp.org/t/mutations-help-please/34970>\
**Category:** General\
**Created:** [September 8, 2016, 12:46am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970 "2016-09-08T00:46:27Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![SolaScriptura92](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/solascriptura92/32/120561_2.png) [@SolaScriptura92](https://forum.freecodecamp.org/u/SolaScriptura92)\
**Post date:** [September 8, 2016, 12:46am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/1 "2016-09-08T00:46:27Z")

</div>

My code works fine except for the case at the bottom of my code, can someone please tell me why? It will be greatly appreciated!! 😃 function mutation(arr) {  
var newArray = [];  
var answer;

for (var i = 0; i \< arr.length; i++) {  
newArray.push(arr[i].toLowerCase());  
}

for (var j = 0; j \< newArray[1].length; j++) {  
if (newArray[0].indexOf(newArray[1][j]) === -1) {  
answer = false;  
}

```
else if (newArray[0].indexOf(newArray[1][j]) === 0) {
  answer = true;
}

```

}

return answer;  
}

mutation([“zyxwvutsrqponmlkjihgfedcba”, “qrstu”]);

---

<div class="post-metadata">

**Author:** ![kevcomedia](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/kevcomedia/32/125737_2.png) [@kevcomedia](https://forum.freecodecamp.org/u/kevcomedia)\
**Post date:** [September 8, 2016, 1:03am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/2 "2016-09-08T01:03:07Z")

</div>

I call this kind of problem the “find a counterexample” problem (made that up just now). In these kinds of problems you start with the assumption that what you get is `true`. Then you proceed with examining your inputs to find just one counterexample. Once you have a counterexample, you now get `false`.

Typically, in code this translates to just an if-block, with no matching else block.

---

<div class="post-metadata">

**Author:** ![SolaScriptura92](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/solascriptura92/32/120561_2.png) [@SolaScriptura92](https://forum.freecodecamp.org/u/SolaScriptura92)\
**Post date:** [September 8, 2016, 1:14am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/3 "2016-09-08T01:14:47Z")

</div>

Thanks! That explains why setting answer to true gets it to work! But why doesn’t it work without doing so? Wouldn’t it be set to true in the for loop?

---

<div class="post-metadata">

**Author:** ![kevcomedia](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/kevcomedia/32/125737_2.png) [@kevcomedia](https://forum.freecodecamp.org/u/kevcomedia)\
**Post date:** [September 8, 2016, 1:22am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/4 "2016-09-08T01:22:41Z")

</div>

Using your present code, let’s try, `mutation("cats", "set")`.

You found that `"s"` is found in `"cats"`, so you set `answer = true`.  
You found that `"e"` _is not_ found in `"cats"`, sou you set `answer = false`. So far so good. This is the correct answer.  
Then you found that `"t"` is found in `"cats"`, so you set `answer = true`. You’ve just replaced the correct answer.

The loop completes its work and now you have `answers = true`, which is definitely not true, The fate of `answer` lies at the last loop iteration.

---

<div class="post-metadata">

**Author:** ![SolaScriptura92](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/solascriptura92/32/120561_2.png) [@SolaScriptura92](https://forum.freecodecamp.org/u/SolaScriptura92)\
**Post date:** [September 8, 2016, 1:59am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/5 "2016-09-08T01:59:29Z")

</div>

Ohh I see! Well setting answer to true at the top of my code. Why is that? Would you recommend adding a condition so that the loop ends when answer is set to false? Thank you so much for your responses.

---

<div class="post-metadata">

**Author:** ![kevcomedia](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/kevcomedia/32/125737_2.png) [@kevcomedia](https://forum.freecodecamp.org/u/kevcomedia)\
**Post date:** [September 8, 2016, 2:05am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/6 "2016-09-08T02:05:01Z")

</div>

You can add `break;` after setting the variable to `false`, or better yet…

…instead of using a variable to store `true` or `false`, you can `return false` early once the condition is met. If it’s not met at the end of the loop, then you can `return true`.

```auto
function mutation(arr) {
  // ...
  for (...) {
    if (...) {
      return false;
    }
  }
  return true;
}

```

---

<div class="post-metadata">

**Author:** ![SolaScriptura92](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/solascriptura92/32/120561_2.png) [@SolaScriptura92](https://forum.freecodecamp.org/u/SolaScriptura92)\
**Post date:** [September 8, 2016, 2:34am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/7 "2016-09-08T02:34:19Z")

</div>

I tried the latter method you gave (getting rid of the variable answer) but it did not work for the first case mutation(“hello”,“hey”). Any ideas as to why? The following is my new code: function mutation(arr) {  
var newArray = [];

for (var i = 0; i \< arr.length; i++) {  
newArray.push(arr[i].toLowerCase());  
}

for (var j = 0; j \< newArray[1].length; j++) {  
if (newArray[0].indexOf(newArray[1][j]) === -1) {  
return false;  
}

```
return true;

```

}

}

---

<div class="post-metadata">

**Author:** ![kevcomedia](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/kevcomedia/32/125737_2.png) [@kevcomedia](https://forum.freecodecamp.org/u/kevcomedia)\
**Post date:** [September 8, 2016, 2:36am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/8 "2016-09-08T02:36:16Z")

</div>

You were returning `true` inside the for-loop. `return true;` should be outside, after the loop completes.

---

<div class="post-metadata">

**Author:** ![SolaScriptura92](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/solascriptura92/32/120561_2.png) [@SolaScriptura92](https://forum.freecodecamp.org/u/SolaScriptura92)\
**Post date:** [September 8, 2016, 2:36am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/9 "2016-09-08T02:36:21Z")

</div>

Nevermind! I know why. My return true was inside of the loop.

---

<div class="post-metadata">

**Author:** ![SolaScriptura92](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/solascriptura92/32/120561_2.png) [@SolaScriptura92](https://forum.freecodecamp.org/u/SolaScriptura92)\
**Post date:** [September 8, 2016, 2:37am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/10 "2016-09-08T02:37:32Z")

</div>

Thank you so much! 😃 😃

---

<div class="post-metadata">

**Author:** ![rudimorpheus](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/rudimorpheus/32/24167_2.png) [@rudimorpheus](https://forum.freecodecamp.org/u/rudimorpheus)\
**Post date:** [November 10, 2016, 9:53am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/11 "2016-11-10T09:53:36Z")

</div>

Thank you both! 🙂 I’m going through it now and this post has been most enlightening! You guys rock!

---

<div class="post-metadata">

**Author:** ![jwilkins.oboe](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/jwilkins.oboe/32/179497_2.png) [@jwilkins.oboe](https://forum.freecodecamp.org/u/jwilkins.oboe)\
**Post date:** [January 16, 2021, 5:31am UTC](https://forum.freecodecamp.org/t/mutations-help-please/34970/12 "2021-01-16T05:31:22Z")

</div>

Closed on January 16, 2021, 5:31am UTC


