创建一个嵌套数组?

时间:2017-02-27 00:30:23

标签: javascript jquery arrays nested

我正在制作一个琐事游戏,它会给用户4个答案。使用数组来包含问题和答案是这个游戏的一个好选择吗?如果是这样,创建嵌套数组的正确方法是什么。

1 个答案:

答案 0 :(得分:0)

所以...在js中制作嵌套数组不是问题,但是如果你想到key =>这是一个问题。数组的值类型,在这种情况下,您需要使用一个对象,您可以像使用数组IF一样预先处理它的属性。你可以将答案值存储在数组中(我已经在那里完成了你想做的琐事学习游戏)但你可以随时使用对象并做类似的事情

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并检查它是否正常工作而无需重新加载页面...(快速检查:))