我正在嘗試創建一個函式,該函式接收一個字串,如果字串中的任何一個 'a' 與同一字串中的 'b' 正好相差 3 個位置,則輸出一個值為 true 的函式。如果 'a's 和 'b's 不完全相距 3 個位置,則回傳 false。
示例 輸入:“after badly” 輸出:false 輸入:“Laura sobs” 輸出:true
這是我到目前為止所擁有的,但它似乎沒有作業。如果有人可以看看并告訴我我哪里出錯了,那就太棒了。
function string(str) {
for (i = 0; i < str.length; i ) {
if(str[i] === 'a' && str[i 3] === 'b'){
return true;
}
}
return false;
}
console.log(string('lane borrowed'))
uj5u.com熱心網友回復:
首先思考問題并向自己描述問題。甚至可能重新措辭。下面是代碼的邏輯,以及如何實作它的一些提示。
- 找到字串中的第一個“a”。提示:使用
indexOf()方法。 - 如果您距離字串末尾超過 3 個字符,請檢查您在上面 1. 中獲得的位置之后的第三個位置。提示:使用
substring()方法,例如myString.substring(pos,1)。 - 如果您在 2. 中獲得的字符不是“b”,并且您不在字串的末尾,請再次重復步驟 1-3。提示:使用 do ... while()
uj5u.com熱心網友回復:
您只會根據您的代碼獲得第三個元素。由于i 3從中獲取第三個元素i應該是兩個空格而不是三個空格。
function string(str) {
for (i = 0; i < str.length; i ) {
if(str[i] === 'a' && str[i 4] === 'b'){
return true;
}
}
return false;
}
console.log(string('lane borrowed'))
uj5u.com熱心網友回復:
ain之后正好 3 個字符lane borrowed是一個空格 。您是打算洗掉空格還是只是數錯了?這是您的函式的一個版本,它洗掉了空格并且它確實正確回傳了 true。
str = str.replace(/\s/g, "");
function string(str) {
str = str.replace(/\s/g, "");
for (i = 0; i < str.length; i ) {
if(str[i] === 'a' && str[i 3] === 'b'){
return true;
}
}
return false;
}
console.log(string('lane borrowed'))
console.log(string('lane borrowed'))
uj5u.com熱心網友回復:
如果您希望字母相隔 3 個字母,則需要將 4 添加到第一個索引:
function string(str) {
for (var i = 0; i < str.length; i ) {
if(str[i] === 'a' && str[i 4] === 'b'){
return true;
}
}
return false;
}
console.log(string('a123b'))
uj5u.com熱心網友回復:
你做得很好,但你沒有洗掉空格,所以在這種情況下:'lane borrowed' str[i] = 'a' str[i 3] = ' '
只洗掉之前的空格:
function string(str) {
const strWithouBlankSpaces = str.replace(' ', '')
for (i = 0; i < strWithouBlankSpaces.length; i ) {
if(strWithouBlankSpaces[i] === 'a' && strWithouBlankSpaces[i 3] === 'b'){
return true;
}
}
return false;
}
console.log(string('lane borrowed'))
uj5u.com熱心網友回復:
由于存在Array.prototype.some一個只需要專注于實作有效字符序列的測驗/條件。some立即停止迭代字符項陣列并true在條件匹配一次時立即回傳布林值...
function isCorrectCharacterSequence(char, idx, arr) {
return (
(char === 'a')
&& (idx < arr.length - 4)
&& (arr[idx 1] !== 'b')
&& (arr[idx 2] !== 'b')
&& (arr[idx 3] !== 'b')
&& (arr[idx 4] === 'b')
);
}
console.log(
'is correct sequence ... "lane borrowed" ?..',
Array
.from('lane borrowed')
.some(isCorrectCharacterSequence)
);
console.log(
'is correct sequence ... "laneborrowed" ?..',
Array
.from('laneborrowed')
.some(isCorrectCharacterSequence)
);
console.log('\n');
console.log(
'is correct sequence ... "Laura sobs" ?..',
Array
.from('Laura sobs')
.some(isCorrectCharacterSequence)
);
console.log(
'is correct sequence ... "after badly" ?..',
Array
.from('after badly')
.some(isCorrectCharacterSequence)
);
console.log('\n');
console.log(
'is correct sequence ... "arrrbitrary" ?..',
Array
.from('arrrbitrary')
.some(isCorrectCharacterSequence)
);
console.log(
'is correct sequence ... "arrbbitrary" ?..',
Array
.from('arrbbitrary')
.some(isCorrectCharacterSequence)
);
console.log(
'is correct sequence ... "arbrbitrary" ?..',
Array
.from('arbrbitrary')
.some(isCorrectCharacterSequence)
);
.as-console-wrapper { min-height: 100%!important; top: 0; }
uj5u.com熱心網友回復:
function string(str) {
for (i = 0; i < str.length - 3; i ) {
if (str[i] === 'a' && str[i 3] === 'b') {
return true;
}
}
return false;
}
console.log(string('lane borrowed'));
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/417409.html
標籤:
