Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建嵌套数组?_Javascript_Jquery_Arrays_Nested - Fatal编程技术网

Javascript 创建嵌套数组?

Javascript 创建嵌套数组?,javascript,jquery,arrays,nested,Javascript,Jquery,Arrays,Nested,我正在创建一个琐事游戏,它会给用户4个答案来选择。使用数组包含问题和答案对这个游戏来说是一个好的选择吗?如果是这样,创建嵌套数组的正确方法是什么 所以。。。在js中,创建嵌套数组不是问题,但如果您考虑的是数组的key=>value类型,那么这就是一个问题。在这种情况下,您需要使用一个对象,您可以像处理数组一样处理它的属性(如果需要)。你们可以在数组中存储答案值(我在那个里做过和你们想做的完全一样的事情,比如琐事学习游戏),但你们可以一直使用对象和做类似的事情 var userAnswer = '

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

所以。。。在js中,创建嵌套数组不是问题,但如果您考虑的是数组的key=>value类型,那么这就是一个问题。在这种情况下,您需要使用一个对象,您可以像处理数组一样处理它的属性(如果需要)。你们可以在数组中存储答案值(我在那个里做过和你们想做的完全一样的事情,比如琐事学习游戏),但你们可以一直使用对象和做类似的事情

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](应该是无效答案?)的游戏,然后呢?如果你仍然认为你的琐事游戏永远不会发展,那么你可能会坚持这个解决方案,但如果你认为它可能会发展,那就用对象来保持东西的组织性


更新 尽量让你的对象保持小&不要做“上帝”对象(查找实体规则),但是如果你想说保存/上一堂包含一些问题的课,那么你可以用一个大对象包含许多小对象,即

//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);

但是,是的,你可以用大的“对象”来“存储”其他对象,但是避免创建像上帝一样的大对象来管理一切,因为它会随着时间而变得很糟糕:我也不确定你是否这样做,但你可以在谷歌chrome工具控制台中粘贴javascript,并检查它是否正常工作,而无需重新加载页面。。。(对于快速检查:)

“好”和“合适”都是意见问题。我会使用一组对象来容纳所有的问题:
questions=[{question:“哪一个是水果?”,回答:2,选项:[“石头”,“纸”,“菠萝”,“剪刀”]},{question:“哪一个是颜色?”,回答:1,选项:[“厌倦”,“绿色”,“鲜味”,“冷”]}
。哦,好的,我也在考虑使用它,所以我会尝试一下。谢谢。非常感谢,我会使用对象,因为我喜欢组织我的东西,如果我想在将来修改或再次使用代码,我有这个结构要回去。另外,如果我计划有8个问题,每个问题有4个答案可供选择。我应该有8个不同的对象还是一个大对象?谢谢你的帮助。我会的,非常感谢你。我感谢你的帮助。