Javascript 使用for循环检查多个变量的内容
我有多个数组变量,其中包含一个问题和两个答案选项。它们用于改变问题的调查Javascript 使用for循环检查多个变量的内容,javascript,for-loop,variables,arguments,var,Javascript,For Loop,Variables,Arguments,Var,我有多个数组变量,其中包含一个问题和两个答案选项。它们用于改变问题的调查 var q1 = ["question","option1","option2"]; var q2 = ["question","option1","option2"]; ... var q8 = ["","",""]; var q9 = ["","",""]; 我希望能够自动更改用户通过的问题数量。我将这样做的方法是添加一个for循环来检查数组是否为空,如果数组为空,它将在之前完成对问题的调查 以下是我尝试过的: fo
var q1 = ["question","option1","option2"];
var q2 = ["question","option1","option2"];
...
var q8 = ["","",""];
var q9 = ["","",""];
我希望能够自动更改用户通过的问题数量。我将这样做的方法是添加一个for循环来检查数组是否为空,如果数组为空,它将在之前完成对问题的调查
以下是我尝试过的:
for (i = 1; i < 9; i++) {
if ("q"+i = ["","",""]) {
console.log("Stopped at "+i);
finishSurvey():
i = 9; //Stop for-loop
} else {
console.log("Error");
}
}
但是,它将选择第一个可用选项(1)。使用==或===使qi未定义。如何使用for循环检查所有数组变量是否为空?我需要一种方法,每次循环运行时增加第二位数字,然后将其作为变量读取
我可以用一个很长的if语句,但是如果我有更多的问题,那将是一件痛苦的事情。你可以检查数组的内容,看看它是否包含空字符串,因为我使用了
join
附加所有空字符串,并将其变成一个空字符串,然后与空字符串引用进行比较
一旦我们找到一个空字符串,我们就停止并退出循环,在遇到空数组的地方打印第i个问题。假设您以有序的方式传递问题数组,使得具有空字符串的问题数组位于末尾
var q1=[“问题”、“选项1”、“选项2];
风险值q2=[“问题”、“选项1”、“选项2”];
变量q3=[“”,“”,“”];
变量q4=[“”,“”,“”];
var问题=[q1、q2、q3、q4];
功能检查问题(问题){
对于(设i=0;i你不能真正“动态”循环那样的变量。我会尝试将所有问题放入一个数组中,并将每个问题及其答案放入一个对象中:
<div id="root"></div>
var questions = [
{
question: "question 1",
answers: [
"answer 1",
"answer 2"
]
},
{
question: "question 2",
answers: [
"answer 1",
"answer 2"
]
},
{
question: "question 3",
answers: [
"answer 1",
"answer 2"
]
}
];
function renderQuestions(questionsArr) {
var html = '';
var container = document.getElementById("#root");
quesaionsArr.forEach(function(questionObj) {
if (questionObj.question && questionObj.answers.length) {
// do your work to create each question and answer
}
});
// append final html to parent
container.appendChild(html)
}
变量问题=[
{
问题:“问题1”,
答复:[
“答复1”,
“答复2”
]
},
{
问题:“问题2”,
答复:[
“答复1”,
“答复2”
]
},
{
问题:“问题3”,
答复:[
“答复1”,
“答复2”
]
}
];
功能渲染器问题(提问器){
var html='';
var container=document.getElementById(“#根”);
提问发起人姓名(功能(提问对象){
if(questionObj.question&&questionObj.answers.length){
//做你的工作来创建每个问题和答案
}
});
//将最终html附加到父级
container.appendChild(html)
}
好的,但是变量仍然是一个一个提到的。这是唯一的方法吗?@Marcus你可以传递任意数量的变量,我从参数数组中获取它们。你也可以将一个变量数组传递给函数并使用扩展运算符。检查问题(…[q1,q2,q3,q4])
。不,不要为此使用eval
。更好,尽管我看不出有任何理由在这里使用扩展语法和参数
对象。或者将q
数组作为单个参数传递,或者使用rest语法并调用检查问题(q1、q2、q3、q4)
。感谢您的编辑!数组的这种用法对我来说太复杂了。您的代码还提供了一个语法错误。“您不能真正“动态”循环那样的变量”--您可以使用eval()
以实现这种功能。我不知道您是如何生成问题的,但我会使用数组。我添加了更多的代码供您使用…“我有多个变量”-这是您的问题。永远不要使用带有枚举名称的变量-改为使用数组,如var q=[q1,q2,q3,…]
然后您就可以轻松地迭代这些问题了。
<div id="root"></div>
var questions = [
{
question: "question 1",
answers: [
"answer 1",
"answer 2"
]
},
{
question: "question 2",
answers: [
"answer 1",
"answer 2"
]
},
{
question: "question 3",
answers: [
"answer 1",
"answer 2"
]
}
];
function renderQuestions(questionsArr) {
var html = '';
var container = document.getElementById("#root");
quesaionsArr.forEach(function(questionObj) {
if (questionObj.question && questionObj.answers.length) {
// do your work to create each question and answer
}
});
// append final html to parent
container.appendChild(html)
}