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