日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JavaScript 面試題:重復輸出一個給定的字符串

瀏覽:18日期:2023-11-14 15:38:09

JavaScript 面試題:重復輸出一個給定的字符串

其實這是可以作為一道很好的面試題,可以考察開發人員的綜合能力。

面試題:

重復輸出一個給定的字符串( str 第一個參數)n 次 ( num 第二個參數),如果第二個參數 num 不是正數的時候,返回空字符串。

function repeatStringNumTimes(str, num) { return str;}repeatStringNumTimes('abc', 3);

提供測試情況:

repeatStringNumTimes('*', 3) //應該返回 '***'.repeatStringNumTimes('abc', 3) //應該返回 'abcabcabc'.repeatStringNumTimes('abc', 4) //應該返回 'abcabcabcabc'.repeatStringNumTimes('abc', 1) //應該返回 'abc'.repeatStringNumTimes('*', 8) //應該返回 '********'.repeatStringNumTimes('abc', -2) //應該返回 ''. 解題思路:

我將介紹三種方法:

使用 `while` 循環 使用遞歸 使用ES6 `repeat()`

方法1:通過 `while` 循環重復輸出一個字符串

這可能是最常規的解題思路。 while 語句只要指定的條件計算結果為 true 的時候,就執行其語句。 while 語句結構大概是這樣的:

while (condition) statement

在每次通過循環之前計算條件結果。如果條件為 true ,則執行語句。如果條件為 false ,則執行繼續 while 循環之后的任何語句。

只要條件為 true ,語句就會執行。 這里是解決方案:

function repeatStringNumTimes(string, times) { // 第1步. 常見一個空字符,用來寄存重復的字符串 var repeatedString = ''; // 第2步. 設置 while 循環的條件為(times > 0) 作為檢查 while (times > 0) { // 只要 times 大于 0, 語句就會執行 // 執行語句 statement repeatedString += string; // 等價于 repeatedString = repeatedString + string; times--; // 遞減,等價于 times = times - 1; } /* while循環邏輯 條件T/F repeatedString += string 結果 次數 1th (3 > 0) true '' + 'abc''abc' 2 2th (2 > 0) true 'abc' + 'abc' 'abcabc' 1 3th (1 > 0) true 'abcabc' + 'abc' 'abcabcabc' 0 4th (0 > 0) false } */ // 第3步. 返回重復字符串 return repeatedString; // 'abcabcabc'}repeatStringNumTimes('abc', 3);

去掉注釋后:

function repeatStringNumTimes(string, times) { var repeatedString = ''; while (times > 0) { repeatedString += string; times--; } return repeatedString;}repeatStringNumTimes('abc', 3);

好,輕松完成!不過這里還可以有幾個變種:

對于老前端來說,首先一個可能會將字符串拼接,修改為 數組 join() 拼接字符串,例如:

function repeatStringNumTimes(string, times) { var repeatedArr = []; // while (times > 0) { repeatedArr.push(string); times--; } return repeatedArr.join('');}repeatStringNumTimes('abc', 3)

很多老前端都有用數組 join() 拼接字符串的“情懷”,因為很早以前普遍認為數組 join() 拼接字符串比字符串 + 拼接速度要快得多。不過現在未必,例如,V8 下 + 拼接字符串,要比數組 join() 拼接字符串快。我用這兩個方法測試了3萬次重復輸出,只相差了幾毫秒。

另一個變種可以用 for 循環:

function repeatStringNumTimes(string, times) { var repeatedString = ''; for(var i = 0; i < times ;i++) { repeatedString += string; } return repeatedString;}repeatStringNumTimes('abc', 3)

方法2:通過條件判斷和遞歸重復輸出一個字符串

遞歸是一種通過重復地調用函數本身,直到它達到達結果為止的迭代操作的技術。為了使其正常工作,必須包括遞歸的一些關鍵特征。

第一種是基本情況:一個語句,通常在一個條件語句(如 if )中,停止遞歸。

第二種是遞歸情況:調用遞歸函數本身的語句。

這里是解決方案:

function repeatStringNumTimes(string, times) { // 步驟1.檢查 times 是否為負數,如果為 true 則返回一個空字符串 if (times < 0) { return ''; } // 步驟2.檢查times是否等于1,如果是,返回字符串本身。 if (times === 1) { return string; } // 步驟3. 使用遞歸 else { return string + repeatStringNumTimes(string, times - 1); // return 'abcabcabc'; } /* 遞歸方法的第一部分你需要記住,你不會只調用一次,您將有好幾個嵌套調用 times string + repeatStringNumTimes(string, times - 1) 1st call 3 'abc' + ('abc', 3 - 1) 2nd call 2 'abc' + ('abc', 2 - 1) 3rd call 1 'abc' => if (times === 1) return string; 4th call 0 '' => if (times <= 0) return ''; 遞歸方法的第二部分 4th call will return '' 3rd call will return 'abc' 2nd call will return 'abc' 1st call will return 'abc' 最后調用是串聯所有字符串 return 'abc' + 'abc' + 'abc'; // return 'abcabcabc'; */}repeatStringNumTimes('abc', 3);

去掉注釋后:

function repeatStringNumTimes(string, times) { if(times < 0) return ''; if(times === 1) return string; else return string + repeatStringNumTimes(string, times - 1);}repeatStringNumTimes('abc', 3);

方法3:使用ES6 `repeat()` 方法重復輸出一個字符串

這個解決方案比較新潮,您將使用 String.prototype.repeat() 方法:

repeat() 方法構造并返回一個新字符串,該字符串包含被連接在一起的指定數量的字符串的副本。 這個方法有一個參數 count 表示重復次數,介于0和正無窮大之間的整數 : [0, +∞) 。表示在新構造的字符串中重復了多少遍原字符串。重復次數不能為負數。重復次數必須小于 infinity,且長度不會大于最長的字符串。

這里是解決方案:

function repeatStringNumTimes(string, times) { //步驟1.如果 times 為正數,返回重復的字符串 if (times > 0) { // (3 > 0) => true return string.repeat(times); // return 'abc'.repeat(3); => return 'abcabcabc'; } //Step 2. Else 如果times是負數,如果為true則返回一個空字符串 else { return ''; }}repeatStringNumTimes('abc', 3);

去掉注釋后:

function repeatStringNumTimes(string, times) { if (times > 0) return string.repeat(times); else return '';}repeatStringNumTimes('abc', 3);

您可以使用三元表達式作為 if/else 語句的快捷方式,如下所示:

function repeatStringNumTimes(string, times) { times > 0 ? string.repeat(times) : '';}repeatStringNumTimes('abc', 3);

面試官可能會根據欣賞這樣的簡潔代碼。

來自:http://www.css88.com/archives/7045

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品nxnn| 亚洲电影在线一区二区三区| 国产精品毛片久久久| 国产精品地址| 久久视频精品| 久久亚洲影院| 136国产福利精品导航网址| 国产精品久久久久久久免费软件| 亚洲香蕉网站| 99久久夜色精品国产亚洲狼 | 日韩欧美中文字幕在线视频| 欧美1级日本1级| 久热综合在线亚洲精品| 久久不见久久见免费视频7| 久久精品影视| 国产精选在线| 国产一区二区精品久| 欧美日韩在线二区| 亚洲在线久久| 视频在线不卡免费观看| 夜夜精品视频| 国产精品调教视频| 91精品一区国产高清在线gif| 蜜桃久久久久久久| 国产精品红桃| 日韩另类视频| 91成人在线| 91精品国产成人观看| 亚洲ww精品| 欧美日韩中文字幕一区二区三区| 亚洲欧美日韩国产综合精品二区| 欧美日韩一区二区三区四区在线观看 | 视频一区视频二区中文字幕| 麻豆久久一区| 视频一区二区欧美| 日本精品黄色| 国产日韩中文在线中文字幕| 欧美aa国产视频| 麻豆91小视频| 日韩不卡一二三区| 日韩午夜高潮| 日本精品影院| 国产精品原创| 久久99久久久精品欧美| 亚洲一区日本| 99久久婷婷| 国产精品久久久久久久久久10秀| 一区二区三区四区日韩| 欧美日中文字幕| 私拍精品福利视频在线一区| 免费看一区二区三区| 日韩高清不卡在线| 免费观看久久久4p| av成人国产| 亚洲视频播放| 亚洲一区二区动漫| 国产精品日韩久久久| 欧美日韩中文一区二区| av在线资源| 97人人精品| 国产精品麻豆久久| 国产精品一区二区精品视频观看 | 国产一区二区久久久久| 久久99蜜桃| 国产成人精品亚洲线观看| 免费在线欧美黄色| 精品欠久久久中文字幕加勒比| 免费一级欧美片在线观看网站| 国产精品天天看天天狠| 国产精品欧美在线观看| 国产精品密蕾丝视频下载| 精品国产亚洲日本| 激情久久中文字幕| 视频一区中文字幕| 88久久精品| 久久超级碰碰| 日韩激情一区| 女主播福利一区| 日韩在线黄色| 国产精品二区不卡| 在线精品小视频| 日韩av网站免费在线| 福利一区和二区| 好看的av在线不卡观看| 午夜电影一区| 欧美成人a交片免费看| 日韩制服丝袜先锋影音| 国产欧美日韩| 欧美视频久久| 亚洲v在线看| 日韩精品视频网站| 久久九九精品| 国产欧美视频在线| 日本精品不卡| 91精品国产自产观看在线| 久久久久99| 久久成人福利| 久久www成人_看片免费不卡| 国产精品成人**免费视频| 在线视频观看日韩| 国产福利亚洲| 日本成人中文字幕在线视频| 免费不卡中文字幕在线| 久久a爱视频| 日韩一区二区三区精品视频第3页| 国产精品亚洲二区| 丝袜国产日韩另类美女| 欧美三级精品| 久久99精品久久久久久园产越南 | 亚洲国产成人二区| 日本欧美一区二区| 欧美一级精品| 国产aⅴ精品一区二区四区| 日韩精品免费观看视频| 国产麻豆综合| 国产国产精品| 亚洲成av在线| 天堂中文在线播放| 青青青国产精品| 日韩欧乱色一区二区三区在线| 亚洲成av人片一区二区密柚| 日韩精品1区| 欧美一级鲁丝片| 欧美aa在线观看| av资源亚洲| 亚洲永久av| 日韩在线短视频| 99tv成人| 国产韩日影视精品| 久久亚洲精品伦理| 一区二区亚洲视频| 午夜亚洲福利| 国产精品成人国产| 精品日本视频| 国产精品久久久久av电视剧| 日韩免费视频| 欧美 日韩 国产一区二区在线视频| 久久久国产亚洲精品| 99精品99| 日韩 欧美一区二区三区| 日韩欧美美女在线观看| 国产精品久久久久毛片大屁完整版| 国产精品亚洲片在线播放| 国产va免费精品观看精品视频| 亚洲午夜天堂| 国产一区二区精品| 欧美视频二区| 国内精品麻豆美女在线播放视频| 麻豆网站免费在线观看| 日韩88av| 欧美69视频| 青草久久视频| 日韩免费在线| 日韩激情一区二区| 成人高清一区| 亚洲资源网站| 日韩88av| 日韩一区二区三免费高清在线观看| 国产精品一国产精品| 亚洲精品va| 欧美成a人片免费观看久久五月天| 亚洲综合在线电影| 日韩免费精品| 免费精品国产的网站免费观看| 蜜臀精品久久久久久蜜臀| 国产剧情一区二区在线观看| 亚洲大片在线| 精品国产欧美| 成人亚洲欧美| 日本中文字幕视频一区| 91亚洲人成网污www| 综合一区av| 欧美日韩一二三四| 欧美精品不卡| 日韩精品免费视频人成| 久久在线免费| 乱一区二区av| 日本欧美大码aⅴ在线播放| 激情婷婷久久| 久久xxx视频| 国产麻豆精品久久| 亚洲精品美女| 久久亚洲风情| 亚洲精品2区| 久久久久蜜桃| 三级精品视频| 欧美成人基地| 色婷婷久久久| 老司机精品在线| 欧美日韩一区二区国产| 日本免费新一区视频| 蜜臀精品久久久久久蜜臀| 伊人久久亚洲美女图片| 欧美~级网站不卡| 精品欧美日韩精品| 精品久久久网| 国产一区二区亚洲| 97在线精品| 激情综合激情| 日韩精品一级中文字幕精品视频免费观看 |