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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JavaScript 面試題:重復(fù)輸出一個(gè)給定的字符串

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

JavaScript 面試題:重復(fù)輸出一個(gè)給定的字符串

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

面試題:

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

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

提供測(cè)試情況:

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

我將介紹三種方法:

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

方法1:通過(guò) `while` 循環(huán)重復(fù)輸出一個(gè)字符串

這可能是最常規(guī)的解題思路。 while 語(yǔ)句只要指定的條件計(jì)算結(jié)果為 true 的時(shí)候,就執(zhí)行其語(yǔ)句。 while 語(yǔ)句結(jié)構(gòu)大概是這樣的:

while (condition) statement

在每次通過(guò)循環(huán)之前計(jì)算條件結(jié)果。如果條件為 true ,則執(zhí)行語(yǔ)句。如果條件為 false ,則執(zhí)行繼續(xù) while 循環(huán)之后的任何語(yǔ)句。

只要條件為 true ,語(yǔ)句就會(huì)執(zhí)行。 這里是解決方案:

function repeatStringNumTimes(string, times) { // 第1步. 常見一個(gè)空字符,用來(lái)寄存重復(fù)的字符串 var repeatedString = ''; // 第2步. 設(shè)置 while 循環(huán)的條件為(times > 0) 作為檢查 while (times > 0) { // 只要 times 大于 0, 語(yǔ)句就會(huì)執(zhí)行 // 執(zhí)行語(yǔ)句 statement repeatedString += string; // 等價(jià)于 repeatedString = repeatedString + string; times--; // 遞減,等價(jià)于 times = times - 1; } /* while循環(huán)邏輯 條件T/F repeatedString += string 結(jié)果 次數(shù) 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步. 返回重復(fù)字符串 return repeatedString; // 'abcabcabc'}repeatStringNumTimes('abc', 3);

去掉注釋后:

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

好,輕松完成!不過(guò)這里還可以有幾個(gè)變種:

對(duì)于老前端來(lái)說(shuō),首先一個(gè)可能會(huì)將字符串拼接,修改為 數(shù)組 join() 拼接字符串,例如:

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

很多老前端都有用數(shù)組 join() 拼接字符串的“情懷”,因?yàn)楹茉缫郧捌毡檎J(rèn)為數(shù)組 join() 拼接字符串比字符串 + 拼接速度要快得多。不過(guò)現(xiàn)在未必,例如,V8 下 + 拼接字符串,要比數(shù)組 join() 拼接字符串快。我用這兩個(gè)方法測(cè)試了3萬(wàn)次重復(fù)輸出,只相差了幾毫秒。

另一個(gè)變種可以用 for 循環(huán):

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

方法2:通過(guò)條件判斷和遞歸重復(fù)輸出一個(gè)字符串

遞歸是一種通過(guò)重復(fù)地調(diào)用函數(shù)本身,直到它達(dá)到達(dá)結(jié)果為止的迭代操作的技術(shù)。為了使其正常工作,必須包括遞歸的一些關(guān)鍵特征。

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

第二種是遞歸情況:調(diào)用遞歸函數(shù)本身的語(yǔ)句。

這里是解決方案:

function repeatStringNumTimes(string, times) { // 步驟1.檢查 times 是否為負(fù)數(shù),如果為 true 則返回一個(gè)空字符串 if (times < 0) { return ''; } // 步驟2.檢查times是否等于1,如果是,返回字符串本身。 if (times === 1) { return string; } // 步驟3. 使用遞歸 else { return string + repeatStringNumTimes(string, times - 1); // return 'abcabcabc'; } /* 遞歸方法的第一部分你需要記住,你不會(huì)只調(diào)用一次,您將有好幾個(gè)嵌套調(diào)用 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' 最后調(diào)用是串聯(lián)所有字符串 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()` 方法重復(fù)輸出一個(gè)字符串

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

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

這里是解決方案:

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

去掉注釋后:

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

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

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

面試官可能會(huì)根據(jù)欣賞這樣的簡(jiǎn)潔代碼。

來(lái)自:http://www.css88.com/archives/7045

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品视频高潮| av在线日韩| 精品中文字幕一区二区三区四区| 日韩中文影院| 国产日产一区| 亚洲九九精品| 日韩午夜黄色| 男女性色大片免费观看一区二区| 亚洲一区二区三区免费在线观看| 免费不卡中文字幕在线| 免费日本视频一区| 日韩精品久久理论片| 另类小说一区二区三区| 亚洲国产专区校园欧美| 伊人久久大香线蕉av不卡| 合欧美一区二区三区| 亚洲一区欧美激情| 久久裸体视频| 国产精品黄色| 国产精品a级| 日韩精品一卡| 日韩高清不卡在线| 超碰在线99| 婷婷综合社区| 国产欧美日韩在线一区二区| 中文字幕日韩高清在线| 国产福利片在线观看| 日本一区免费网站| 欧美+亚洲+精品+三区| 国产日韩高清一区二区三区在线 | 日韩专区在线视频| 四虎精品一区二区免费| 精品久久91| 日韩激情网站| 99tv成人| 国产精品毛片久久| 国产激情久久| 欧美一级网站| 男人的天堂亚洲一区| 日韩电影二区| 久久精品一区二区国产| 亚洲欧美日韩一区在线观看| 高清一区二区三区av| 麻豆免费精品视频| 国产精品亚洲产品| 91精品视频一区二区| 日韩精品欧美激情一区二区| 国产一区国产二区国产三区| 欧美片第1页综合| 日本欧美一区| 91综合久久爱com| 日韩精品乱码av一区二区| 亚洲精品成a人ⅴ香蕉片| 久久午夜精品一区二区| 在线视频观看日韩| 高清在线一区| 欧美日韩亚洲一区二区三区在线| 午夜一级久久| 久久亚洲国产精品一区二区| 亚洲专区在线| 亚久久调教视频| 国产日本精品| 精品九九久久| 欧美日韩在线二区| 激情综合亚洲| 美美哒免费高清在线观看视频一区二区| 日韩在线第七页| 丝袜美腿高跟呻吟高潮一区| 中文字幕av一区二区三区四区| 在线精品亚洲| 91大神在线观看线路一区| 欧美视频二区| 国精品产品一区| 国产在线成人| 亚洲一区av| 美女国产一区二区三区| 欧美日韩视频免费观看| 蜜桃久久精品一区二区| 国产精品成人**免费视频 | 日韩和欧美的一区| 麻豆精品在线| 性欧美xxxx免费岛国不卡电影| 亚洲一区二区免费看| 久久国产88| 国产精品v一区二区三区| 色综合视频一区二区三区日韩 | 久久不见久久见国语| 人人精品亚洲| 久久成人av| 激情五月综合| 美腿丝袜亚洲三区| 激情婷婷久久| 国产精品极品在线观看| 亚洲国产专区校园欧美| 日韩激情一二三区| 美女视频黄 久久| 日韩视频久久| 毛片不卡一区二区| 中文字幕日韩高清在线| 日韩精品影视| 美女久久精品| 99视频精品视频高清免费| 91亚洲无吗| 亚洲另类av| 欧美中文字幕| 国产主播一区| 国产一区国产二区国产三区| 中文字幕日韩欧美精品高清在线| 久久婷婷av| 麻豆成全视频免费观看在线看| 日韩高清一区二区| 日韩影院免费视频| 国产高清一区二区| 美女福利一区二区三区| 一区二区三区四区在线观看国产日韩 | 国产精品115| 久久99久久人婷婷精品综合| 日本成人在线不卡视频| 久久久夜精品| 天堂中文av在线资源库| 久草精品视频| 日韩啪啪电影网| 欧美13videosex性极品| 99久久精品费精品国产| 国产一区日韩一区| 麻豆亚洲精品| 日韩中文欧美在线| 婷婷综合国产| 一级欧美视频| 亚洲日产国产精品| 国产成人精选| 国产+成+人+亚洲欧洲在线| 精品九九在线| 亚洲午夜在线| 99riav国产精品| 青草国产精品| 91嫩草精品| 国产理论在线| 青青久久av| 天海翼亚洲一区二区三区| 精品国产99| 蜜桃一区二区三区| 免费精品视频最新在线| 日韩欧美激情电影| 亚洲一区二区三区高清| 国产日韩精品视频一区二区三区| 丰满少妇一区| 亚洲欧美视频一区二区三区| 日韩欧美视频专区| 三级久久三级久久久| 国产精品国产三级国产在线观看| 999国产精品视频| 婷婷亚洲五月| 欧美色图国产精品| 欧美日一区二区三区在线观看国产免| 精品久久91| 亚洲天堂av资源在线观看| 国产高潮在线| 日本99精品| 97在线精品| 日韩精品乱码av一区二区| 91精品国产福利在线观看麻豆| 日韩亚洲精品在线观看| 97视频热人人精品免费| 日韩黄色在线观看| 久久精品免费一区二区三区| 国产精品永久| 视频一区视频二区中文字幕| 日本一区二区高清不卡| 69堂免费精品视频在线播放| 1024精品久久久久久久久| 国产一区二区三区黄网站| 美女黄网久久| 免费观看久久av| 精品中文在线| 日韩在线网址| 亚洲一区二区三区四区五区午夜| 中文av在线全新| 国产视频一区二| 日韩精品一卡二卡三卡四卡无卡| 成人亚洲欧美| 黄毛片在线观看| 中文字幕在线官网| 国产一区二区三区黄网站| 国产精品传媒麻豆hd| 国产欧美日韩视频在线| 午夜性色一区二区三区免费视频| 中国女人久久久| 在线亚洲自拍| 免费av一区二区三区四区| 亚洲成人av观看| 亚洲福利专区| 欧美在线网站| 蜜桃免费网站一区二区三区| 鲁大师成人一区二区三区| 999在线观看精品免费不卡网站| 在线成人动漫av| 亚洲欧美网站| 97久久亚洲| 成人日韩av|