2017-02-27 101 views
-1

我正在創建一個瑣事遊戲,它會給用戶4個答案。是使用數組來包含問題和答案這個遊戲的一個很好的選擇?如果是的話,什麼是創建嵌套數組的正確方法。創建一個嵌套的數組?

+0

「好」和「正確」都是意見問題。我會用一組對象來解決所有問題:'questions = [{question:「哪個是水果?」,答案:2,選項:[「rock」,「paper」,「菠蘿」,「剪刀「]},{question:」哪一種顏色?「,答案:1,選項:[」ennui「,」green「,」umami「,」cold「]}]'。 – nnnnnn

+0

哦,好吧,我正在考慮使用它,所以我會嘗試一下。謝謝。 – skyeyl

回答

0

因此......在js中,製作一個嵌套數組並不是問題,但如果您正在考慮key =>值類型的數組,那麼這是一個問題,在這種情況下,您需要使用一個對象,如果您需要的話,可以像使用數組那樣對其進行foreach屬性。你可以存儲回答值陣列(我去過那裏正是你想這樣做的瑣事學習遊戲一樣的東西),但你可以隨時使用對象和做這樣的事情

var userAnswer = 'something', 
    item = { 
     question: 'what is a?' 
     answers: [ 'a', 'b', 'c' ] 
     validAnswer: 0; 
    } 

if(userAnswer === item.answers[validAnswer]) { 
    console.log("is valid"); 
} 

一些其他的用法:

var userStats = { 
    status: 'alive', 
    makeDead: function() { 
     this.status = 'dead'; 
    }, 
    bringBackToLife: function() { 
     this.status = 'alive'; 
    }, 
} 
//then you can even do things like... 
userStats.makeDead(); 
console.log(userStats); //user will be dead 
userStats.bringBackToLife(); //user status will be alive 

我的意思是你應該罰款與陣列保持公正問題或問題和答案的(嵌套的[[]])陣列,但隨後你開始玩陣列的比賽[0](應該是問題對吧?)數組[3](應該是無效答案?)然後呢?如果你仍然認爲你的瑣事遊戲永遠不會增長,那麼你可能會堅持這個解決方案,但如果你認爲它可能會演變只是使用對象來保持組織的東西。


更新 儘量保持你的對象小&不要讓「上帝」的對象(查找SOLID規則),但如果你想假設保存/有一個包含一些問題,然後一個教訓,你可以有一個大含有大量的小的物體,即

//you can make object to store some data and functions 
var LessonItem = function(question){ 
    this.question = question; 
    this.answers = []; 

    this.addAnswer = function(answer){ 
     this.answers.push(answer); 
    }; 
}; 

//you dont need the 'valid' part if there's always just one valid option 
var question1 = new LessonItem('What is?'); 
question1.addAnswer({text: 'It is something', valid: true }); 
question1.addAnswer({text: 'It is something not', valid: false }); 
question1.addAnswer({text: 'It is something 3', valid: true }); 

//and this would be our 'big' object, i.e. to save in json file or whatever 
var lesson = { 
    lesson_subject: 'something', 
    lesson_repeat: 3, 
    lesson_score: 124, 
    lesson_items: [ 
     question1, 
     //question2 
    ] 
}; 
console.log(lesson); 

但是,是的,你可以有很大的「對象」到「商店」別人,但要避免創造神一樣的一個龐大的管理對象的一切事業將成爲地獄時間:D以及即時通訊不知道如果你這樣做,但你可以粘貼在你的JavaScript在谷歌鉻工具控制檯和檢查它是否正常工作,無需重新加載頁面...(用於快速檢查:))

+0

非常感謝你,我會使用對象,因爲我喜歡我的東西組織起來,如果我想在未來再次修改或重新使用代碼,我可以回到這個結構。此外,如果我計劃每個問題有8個問題,並有4個答案。我應該有8個不同的對象還是一個大對象?感謝您的幫助。 – skyeyl

+0

我會的,非常感謝。我感謝您的幫助。 – skyeyl