背景:從數據庫中,隨機生成一份試卷,試卷的種類分爲單選、多選、判斷三種題型。node
首先我須要生成隨機數id(在這以前我須要知道數據庫中各個題型的題數,這樣我才能設置隨機數),並依據生成的隨機數id,去查找對應的題目。而在js的數組操做中,有filter、splice、concat、every、find等等。我須要從數據庫中取出特定的數據,而我返回的是一組對象,那麼我須要過濾出特定的部分。數據庫
代碼以下:json
var danxuan = getRandomNum(danxuan_count,20);
var duoxuan = getRandomNum(duoxuan_count,5);
var panduan = getRandomNum(panduan_count,10);
將生成的隨機數存到example中,
var example = {danxuan:danxuan.sort(sortNumber),duoxuan:duoxuan.sort(sortNumber),panduan:panduan.sort(sortNumber)}//查找數據庫models.Answer.findAll().then(function(result){ var danxuanList = result.filter(t => t.exampleType=="單選題");//nodejs6.0支持 => var duoxuanList = result.filter(t => t.exampleType=="多選題"); var panduanList = result.filter(t => t.exampleType=="判斷題"); //新建對象 var exampleList = {duoxuan:[],danxuan:[],panduan:[]}; //根據隨機生成的編號id,去各個list中找相應的數據 example.danxuan.forEach(function(i,v){ exampleList.danxuan.push(danxuanList[i]); }) example.duoxuan.forEach(function(i,v){ exampleList.duoxuan.push(duoxuanList[i]); }) example.panduan.forEach(function(i,v){ exampleList.panduan.push(panduanList[i]); }) res.json(exampleList);//試卷生成完畢});