获取JavaScript数组测试中的未定义错误
我试图使用数组中的数据进行简单的多项选择,例如测验,但我遇到了一个错误:获取JavaScript数组测试中的未定义错误,javascript,arrays,loops,undefined,typeerror,Javascript,Arrays,Loops,Undefined,Typeerror,我试图使用数组中的数据进行简单的多项选择,例如测验,但我遇到了一个错误:TypeError:无法读取未定义的的属性“0” 可能的选择应该是4,正确的答案是第一选择。我已尝试在线搜索解决方案,但我不知道是什么原因导致错误以及如何修复错误: var主列表=[ [“印度尼西亚”、“雅加达”], [“马来西亚”、“吉隆坡”], [“菲律宾”、“马尼拉”], [“新加坡”、“新加坡”], [“泰国”、“曼谷”], [“越南”、“河内”] ]; 函数randomNoRepeats(数组){ var cop
TypeError:无法读取未定义的
的属性“0”
可能的选择应该是4,正确的答案是第一选择。我已尝试在线搜索解决方案,但我不知道是什么原因导致错误以及如何修复错误:
var主列表=[
[“印度尼西亚”、“雅加达”],
[“马来西亚”、“吉隆坡”],
[“菲律宾”、“马尼拉”],
[“新加坡”、“新加坡”],
[“泰国”、“曼谷”],
[“越南”、“河内”]
];
函数randomNoRepeats(数组){
var copy=array.slice(0);
返回函数(){
如果(复制长度<1){
copy=array.slice(0);
}
var index=Math.floor(Math.random()*copy.length);
var项目=复制[索引];
拷贝。拼接(索引,1);
退货项目;
};
}
var chooser=randomNoRepeats(主列表)//随机化选择
//log(chooser());
var quizArea=document.getElementById(“测试区域”);
变量a=[];//用于存储随机化项的新空数组
变量c=[];//用于存储随机项的新空数组(副本)
var b;
正确答案;
对于(变量i=0;i
问题来自声明c=a代码>。它不复制数组。c
和a
都引用相同的数组对象
这意味着线a.splice(索引,1)
将a
和c
更改到位
这里的一个解决方案是在最后一个for循环中使用a
的真实副本
for(变量i=0;i
var主列表=[
[“印度尼西亚”、“雅加达”],
[“马来西亚”、“吉隆坡”],
[“菲律宾”、“马尼拉”],
[“新加坡”、“新加坡”],
[“泰国”、“曼谷”],
[“越南”、“河内”]
];
函数randomNoRepeats(数组){
var copy=array.slice(0);
返回函数(){
如果(复制长度<1){
copy=array.slice(0);
}
var index=Math.floor(Math.random()*copy.length);
var项目=复制[索引];
拷贝。拼接(索引,1);
退货项目;
};
}
var chooser=randomNoRepeats(主列表)//随机化选择
//log(chooser());
var quizArea=document.getElementById(“测试区域”);
变量a=[];//用于存储随机化项的新空数组
var c;
var b;
正确答案;
对于(变量i=0;i