這是我在這里的第一篇文章,我正在嘗試做一個 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/397606.html
標籤:javascript for循环 if 语句
