变量没有被保存
variable isn't getting saved
我正在尝试使用递归来解决问题。 objective是取一个输入字符串句子,return一个新句子,其中每个单词的首字母都被删除,直到每个单词的首字母为元音。
这是我的尝试:
function deleteConsonants(sentence) {
let words = sentence.split(" ");
let newWords = [];
for (let i = 0; i < words.length; i++) {
let newWord = shifter(words[i]);
newWords.push(newWord);
}
return newWords.join(" ");
}
function shifter(word) {
let vowels = "aeiouAEIOU";
let wordArr = word.split("")
if (!vowels.includes(wordArr[0])) {
wordArr.shift()
newWordArr = wordArr.join("")
shifter(newWordArr)
}
return word
}
// let a = deleteConsonants("I love pizza") // "I ove izza"
// let b = deleteConsonants("This is blasphemy sir") // "is is asphemy ir"
// console.log(a)
// console.log(b)
我 运行 Chrome 的调试器,似乎函数“shifter”工作正常,直到它到达 return 一个词的步骤。我的变量“newWord”,被推送到新数组的变量,由于某种原因最终成为旧的,未更改的单词版本。
像这样的东西应该可以工作:
function deleteConsonants(sentence) {
let words = sentence.split(" ");
let newWords = [];
for (let i = 0; i < words.length; i++) {
let newWord = shifter(words[i]);
newWords.push(newWord);
}
return newWords.join(" ");
}
function shifter(word) {
let vowels = "aeiouAEIOU";
let wordArr = word.split("")
if (!vowels.includes(wordArr[0])) {
wordArr.shift()
newWordArr = wordArr.join("")
return shifter(newWordArr)
}
return word
}
如果您删除 if
块外的 return,您将收到“超出最大调用堆栈大小”错误。你两个都需要
我正在尝试使用递归来解决问题。 objective是取一个输入字符串句子,return一个新句子,其中每个单词的首字母都被删除,直到每个单词的首字母为元音。
这是我的尝试:
function deleteConsonants(sentence) {
let words = sentence.split(" ");
let newWords = [];
for (let i = 0; i < words.length; i++) {
let newWord = shifter(words[i]);
newWords.push(newWord);
}
return newWords.join(" ");
}
function shifter(word) {
let vowels = "aeiouAEIOU";
let wordArr = word.split("")
if (!vowels.includes(wordArr[0])) {
wordArr.shift()
newWordArr = wordArr.join("")
shifter(newWordArr)
}
return word
}
// let a = deleteConsonants("I love pizza") // "I ove izza"
// let b = deleteConsonants("This is blasphemy sir") // "is is asphemy ir"
// console.log(a)
// console.log(b)
我 运行 Chrome 的调试器,似乎函数“shifter”工作正常,直到它到达 return 一个词的步骤。我的变量“newWord”,被推送到新数组的变量,由于某种原因最终成为旧的,未更改的单词版本。
像这样的东西应该可以工作:
function deleteConsonants(sentence) {
let words = sentence.split(" ");
let newWords = [];
for (let i = 0; i < words.length; i++) {
let newWord = shifter(words[i]);
newWords.push(newWord);
}
return newWords.join(" ");
}
function shifter(word) {
let vowels = "aeiouAEIOU";
let wordArr = word.split("")
if (!vowels.includes(wordArr[0])) {
wordArr.shift()
newWordArr = wordArr.join("")
return shifter(newWordArr)
}
return word
}
如果您删除 if
块外的 return,您将收到“超出最大调用堆栈大小”错误。你两个都需要