[英]Algorithm challenge: Repeating a string
剛學習JS並正在經歷算法挑戰。
下面的代碼應重復一個字符串(str)x(num)次。
因此,例如repeatStringNumTimes('*',3)應該為'***'。 下面的代碼可以做到這一點...但是在輸出的開頭出現了一個“未定義”的單詞。 這是為什么?! 我已經定義了所有變量...
function repeatStringNumTimes(str, num) {
let len = str.length;
let string;
for (let i = 0; i < num; i++) {
for (let x = 0; x < len; x++) {
string += str[x];
}
}
return string;
}
console.log(repeatStringNumTimes('*', 10));
我已經定義了所有變量
是的,您定義它,但不初始化 。
javascript中的默認初始化是undefined
。
所以, let a;
等於let a = undefined;
您應該使用空字符串初始化字符串:
let string = '';
請注意:
現代的javascript引擎具有用於該任務的String.prototype.repeat方法:
console.log('*'.repeat(10)); // **********
您可能需要聲明字符串:
let string = "";
更新:
因為這行:
string += str[x];
等於:
string = string + str[x];
// equivalent to string = undefined + str[x]
您正在為其分配一個未定義的字符串(+ str [x]),如果這是有意義的話。
好的,為了完成這項工作,我添加了
let string = "";
我不知道為什么會這樣。 任何有經驗的人的見解將不勝感激。
傳統方法使用while
const repeatStringNumTimes = (str, num) => { let res = str while (--num) res += str return res } console.log(repeatStringNumTimes('*', 10))
const repeatStringNumTimes = (str, num) => str.repeat(num) console.log(repeatStringNumTimes('*', 10))
使用String.prototype.padStart()
或String.prototype.padEnd()
const repeatStringNumTimes = (str, num) => ''.padStart(num, str) console.log(repeatStringNumTimes('*', 10))
const repeatStringNumTimes = (str, num) => Array(num).join(str) console.log(repeatStringNumTimes('*', 10))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.