[英]trouble with Javascript while loop, what am I doing wrong?
因此,我正在做一個練習,其中我必須對給定的字符串進行排序。 字符串中的每個單詞都包含一個數字(寫為“ H3llo”)。 字符串中每個單詞中的數字應根據要返回的新字符串中的數字進行排序。
例如,如果我的輸入是“ is2 Thi1s T4est 3a”,那么我的函數應返回“ Thi1s is2 3a T4est”。
我幾乎破解了,但輸出不完整。 這是我的代碼:
function order(words) {
var lst = words.split(' ');
var count = 0;
var n = count + 1;
var s_n = n.toString();
var new_l = [];
while (count < lst.length) {
if (lst[count].includes(s_n) === true) {
new_l.push(lst[count])
}
count++
}
return new_l.join(' ');
}
當我測試它時,沒有得到:
console.log(order("is2 Thi1s T4est 3a"));
>>> 'Thi1s is2 3a T4est'
我得到這個:
console.log(order("is2 Thi1s T4est 3a"));
>>> 'Thi1s'
誰能向我解釋我做錯了什么?
基本上,您將需要兩個loops
-一個loops
用於當前計數器count
即遞增數字,另一個循環遍歷單詞列表以匹配該數字。 僅在完成對列表的迭代之后,才增加計數。
function order(words) { var lst = words.split(' '); var count = 0; var new_l = []; while (count <= lst.length) { for (i = 0; i < lst.length; i++) { if (lst[i].includes(count)) { new_l.push(lst[i]) } } count++; } return new_l.join(' '); } console.log(order("is2 Thi1s T4est 3a"));
s_n
注意,您不需要s_n
-轉換是隱式的,並且不需要=== true
因為這在if
語句中是隱式的。
您做錯的主要事情是在循環之前將s_n分配給字符串'1',但從未在循環中更新它。 在更新count的同時,您需要將s_n更新為下一個整數的字符串。
因此,您“修復”了您未在外循環中更新n或s_n值的部分,但是代碼仍然無法正常工作,因為您現在使用count都增加了所要查找的數字(在a內單詞),然后在單詞列表中增加搜索量。 您需要一個內部循環(和另一個變量)來增加搜索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.