‘xyz’.match(‘w’);
null
I wrote the code to solve the problem
function mutation(arr) {
s1=arr[0].toLowerCase();
s2=arr[1].toLowerCase().split('');
s2.map(function(x){
if (s1.match(x)===null){return false;}
});
return true;
}
mutation([“hello”, “hy”]);
Why the result is true,not false?
I don’t think .map
is appropriate to solve this. No matter what happens in .map
, your function will always return true
.
Try using a for-loop. You might also be better off using .toLowerCase
for both s1
and s2
.
it is a typo for toUpperCase.
No matter what happens in .map, your function will always return true.
Why?
.map
returns a new array (based on s2
in your code). The function in .map
only tells what the elements in the new array will look like. It has virtually no effect on the mutation
function.
Also. note that nothing catches the value returned by .map
, so the entire
s2.map(function(x) {...});
business essentially does nothing. After that you hit return true
, every time.
Another way to think about it is that return
is attached to the function it resides in. So the return false
is attached to the function in .map
and is in no way related to the mutation
function. The only return
attached to mutation
is the return true
line at the bottom, so that’s only what mutation
returns.
It was solved with for loop.
function mutation(arr) {
s1=arr[0].toLowerCase();
s2=arr[1].toLowerCase().split('');
for(var i=0;i<s2.length;i++){
if (!s1.match(s2[i])){return false;}
}
return true;
}