var subsequences = function(s) {
if (s==="") {
return s
} else {
var firstLetter = s.charAt(0)
var restOfWord = s.substring(1)
I am trying to implement a function
var subsequences = function(s) {
if (s==="") {
return s
} else {
var firstLetter = s.charAt(0)
var restOfWord = s.substring(1)
I am trying to implement a function
You are using a for..in loop, which is for iterating objects, not arrays. Instead, use the Array.forEach() method on the Array returned from your .split() method call.
You should also get in the habit of ending your statements with a semi-colon and not rely on automatic semi-colon insertion.
var subsequences = function(s) {
if (s==="") {
return s;
} else {
var firstLetter = s.charAt(0);
var restOfWord = s.substring(1);
var subsequencesOfRest = subsequences(restOfWord);
var result = "";
subsequencesOfRest.split(",").forEach(function(item){
result += "," + item;
result += "," + firstLetter + item;
});
result = result.substring(1);
return result;
}
};
console.log(subsequences("gc"))
instead of using in, you should use of to iterate a array.
all you need to change, is one word:
var subsequences = function(s) {
if (s==="") {
return s
} else {
var firstLetter = s.charAt(0)
var restOfWord = s.substring(1)
var subsequencesOfRest = subsequences(restOfWord)
var result = ""
for (var subsequence of subsequencesOfRest.split(",")) {
result += "," + subsequence
result += "," + firstLetter + subsequence
}
result = result.substring(1)
return result
}
}
console.log(subsequences("gc"))
Use for of and not for in
var subsequences = function(s) {
if (s==="") {
return s
} else {
var firstLetter = s.charAt(0)
var restOfWord = s.substring(1)
var subsequencesOfRest = subsequences(restOfWord)
var result = ""
for (let subsequence of subsequencesOfRest.split(",")) {
result += "," + subsequence
result += "," + firstLetter + subsequence
}
result = result.substring(1)
return result
}
}
console.log(subsequences("gc"))
the point is for (var subsequence in subsequencesOfRest.split(",")) {
}
when the subsequencesOfRest is '',run subsequencesOfRest.split(","),the result is [""],
and the subsequence is index in array,so subsequence is 0.