摘要:所以,需求就簡(jiǎn)化成在這個(gè)長度的數(shù)組里,隨機(jī)獲取其中項(xiàng)。本項(xiàng)目中,我的數(shù)組中都是題目對(duì)象,包含了題目標(biāo)題答案列表正確答案每道題目的失敗提示語。
之前接到的一個(gè)項(xiàng)目,需求是這樣:
平臺(tái):移動(dòng)端HTML5,全部前端完成
實(shí)現(xiàn)功能:答題闖關(guān),答對(duì)一道題進(jìn)入下一道,題目隨機(jī)從題庫中選取。
規(guī)則:累計(jì)答對(duì)9道題則闖關(guān)成功,但是累計(jì)答錯(cuò)4道題則闖關(guān)失敗,游戲終止。
解析該如何取題:
假如題庫中有50道題,再取題的時(shí)候是不用沒答完一道題,隨機(jī)取下一道題的。如果這樣的話效率就比較低,邏輯還復(fù)雜。
所以最好的方法是,計(jì)算每次游戲需要的最大題目數(shù)就好,這里可以計(jì)算一下,無論用戶答對(duì)多少,答錯(cuò)多少,每次最多只會(huì)使用12道題目。
所以,需求就簡(jiǎn)化成: 在這個(gè)長度50的數(shù)組里,隨機(jī)獲取其中12項(xiàng)。
方法如下:
function getRandomArray(arr,num){ //新建一個(gè)數(shù)組,將傳入的數(shù)組復(fù)制過來,用于運(yùn)算,而不要直接操作傳入的數(shù)組; var temp_array = new Array(); for (var index in arr) { temp_array.push(arr[index]); } //取出的數(shù)值項(xiàng),保存在此數(shù)組 var return_array = new Array(); for (var i = 0; i0) { //在數(shù)組中產(chǎn)生一個(gè)隨機(jī)索引 var arrIndex = Math.floor(Math.random()*temp_array.length); //將此隨機(jī)索引的對(duì)應(yīng)的數(shù)組元素值復(fù)制出來 return_array[i] = temp_array[arrIndex]; //然后刪掉此索引的數(shù)組元素,這時(shí)候temp_array變?yōu)樾碌臄?shù)組 temp_array.splice(arrIndex, 1); } else { //數(shù)組中數(shù)據(jù)項(xiàng)取完后,退出循環(huán),比如數(shù)組本來只有10項(xiàng),但要求取出20項(xiàng). break; } } return return_array; }
代碼注釋特別清晰,很容易明白,代碼不是我寫的,出處我找不到了,覺得寫得很好學(xué)習(xí)一下。
本項(xiàng)目中,我的數(shù)組中都是題目對(duì)象,包含了題目標(biāo)題、答案列表、正確答案、每道題目的失敗提示語。這樣就很容易處理需求中的邏輯了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/86060.html
1. splice Js中的splice方法 splice(index,len,[item])??? 注釋:該方法會(huì)改變?cè)紨?shù)組。 splice有3個(gè)參數(shù),它也可以用來 替換/刪除/添加 數(shù)組內(nèi)某一個(gè)或者幾個(gè)值 index:數(shù)組開始下標(biāo)????????len: 替換/刪除的長度?????? item:替換的值,刪除操作的話 item為空 如: arr = [a,b,c,d] 1.1 刪除 刪除 ...
摘要:將品牌的標(biāo)價(jià)全部加蘇南的專欄交流公眾號(hào)不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)。方法用于調(diào)用數(shù)組的每個(gè)元素,并將元素傳遞給回調(diào)函數(shù)。 showImg(https://segmentfault.com/img/bVblSSO?w=1008&h=298); 前言: ? 今天我想分享一個(gè)有關(guān)于循環(huán)篩選的知識(shí)點(diǎn),也許是前端小白的你首先想到的是用for循環(huán)做篩選,但我這種小菜鳥想到的就是map(工作中很喜歡...
摘要:將品牌的標(biāo)價(jià)全部加蘇南的專欄交流公眾號(hào)不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)。方法用于調(diào)用數(shù)組的每個(gè)元素,并將元素傳遞給回調(diào)函數(shù)。 showImg(https://segmentfault.com/img/bVblSSO?w=1008&h=298); 前言: ? 今天我想分享一個(gè)有關(guān)于循環(huán)篩選的知識(shí)點(diǎn),也許是前端小白的你首先想到的是用for循環(huán)做篩選,但我這種小菜鳥想到的就是map(工作中很喜歡...
閱讀 1566·2021-09-22 15:52
閱讀 3472·2021-09-22 14:59
閱讀 2852·2021-09-02 15:12
閱讀 980·2021-08-20 09:35
閱讀 1585·2019-08-30 14:09
閱讀 2717·2019-08-30 13:56
閱讀 1656·2019-08-26 18:27
閱讀 3370·2019-08-26 13:37