这是我在这里的第一篇文章,我正在尝试做一个 freecodecamp 练习。
这是我的代码:
function mutation(arr) {
let newArr = arr[0].toLowerCase();
let arrNew = arr[1].toLowerCase();
let test = newArr.split(' ');
let newTest = arrNew.split(' ');
for (let i=0; i < test.length; i ) {
for (let j=0; j < newTest.length; j ) {
if (newTest[j] === test[i]) {
return true;
}
}
}
return false;
}
mutation(["hello", "hey"]);
练习是“突变”,如果阵列中的第一个字符串包含第二个字符串中的所有字母,我需要回传 true。我试图了解如何在 if 陈述句为真时停止回圈并保存它。
提前致谢,如果我没有正确解释自己,我很抱歉。
uj5u.com热心网友回复:
以下代码应该对您有所帮助。
function mutation(arr) {
let newArr = arr[0].toLowerCase();
let arrNew = arr[1].toLowerCase();
for (let i=0; i < newArr.length; i ) {
if (arrNew.indexOf(newArr[i]) == -1) {
return false;
}
}
return true;
}
mutation(["hello", "hey"]);
不需要使用阵列。在 JS 中,字符串就像阵列一样作业,我们可以使用“for”回圈。
uj5u.com热心网友回复:
对于你的问题
return
将退出函式,因此将退出回圈。由此
我们知道,如果您的函式回传false,则该条件newTest[j] === test[i]
从未得到验证。
练习的提示
您可以假设第一个单词包含第二个单词的所有字母,就像您现在所做的那样迭代并检查是否找到反例!
uj5u.com热心网友回复:
如果您想在示例代码中使用回圈,这里是一种非常冗长的方法:
function mutation(arr) {
let hasAllLetters = true;
let stringToCompare = arr[0].toLowerCase();
let referenceString = arr[1].toLowerCase();
let hasCurrentLetter;
for (let i=0; i < referenceString.length; i ) {
hasCurrentLetter = false;
for (let j=0; j < stringToCompare.length; j ) {
if (referenceString[i] === stringToCompare[j]) {
hasCurrentLetter = true;
// break from the second loop as soon as the condition is satisfied
break;
}
}
if(!hasCurrentLetter){
hasAllLetters = false;
// as soon as there is at least one letter which does not exist from the reference string
// break from the second loop and exit yielding the result false
break;
}
}
return hasAllLetters;
}
let res;
res = mutation(["hello", "goll"]);
console.log("res: ", res); // false
res = mutation(["hello", "olhh"]);
console.log("res: ", res); // true
0 评论