Javascript 为什么在删除重复项时,我会得到一个NaN值和rubiks多维数据集置乱生成器的结尾?

Javascript 为什么在删除重复项时,我会得到一个NaN值和rubiks多维数据集置乱生成器的结尾?,javascript,arrays,duplicates,Javascript,Arrays,Duplicates,我正在为fitbit versa开发一个Rubik cube应用程序,我遇到了从阵列中删除重复项的问题,因为在从列表末尾删除重复项后组合阵列时,我遇到了一个NaN错误,并且只有在我在阵列末尾拼接时才会发生这种情况,我无法找出这不起作用的原因 函数getScramble(移动次数、面、修改器、加扰面、加扰修改器、加扰){ 对于(变量i=0;i

我正在为fitbit versa开发一个Rubik cube应用程序,我遇到了从阵列中删除重复项的问题,因为在从列表末尾删除重复项后组合阵列时,我遇到了一个NaN错误,并且只有在我在阵列末尾拼接时才会发生这种情况,我无法找出这不起作用的原因

函数getScramble(移动次数、面、修改器、加扰面、加扰修改器、加扰){
对于(变量i=0;i<移动次数;i++){
var sample=faces[Math.floor(Math.random()*faces.length)];
var mod=modifiers[Math.floor(Math.random()*modifiers.length)];
置乱面[i]=样本;
置乱修饰符[i]=mod;
if(置乱面[i]==置乱面[i-1]){
扰码_faces[i]=faces[Math.floor(Math.random()*faces.length)];
}
}
移除的副本(置乱面、置乱修改器)
for(var i=0;i<移动次数-2;i++){
加扰[i]=加扰面[i]+加扰修改器[i]
}
控制台日志(加扰);
让DemoExt=document.getElementById(“DemoExt”);
demoext.text=加扰;
扰码=[];
加扰_面=[];
置乱_修饰符=[];

}
加扰面
和加扰修改器
的长度最初是
移动次数
。但是,在从它们中删除重复项之后,它可以更短。但是在下一个
for
循环的限制中,您仍然使用
移动次数
。因此,当您尝试添加不再存在的元素时,会得到
未定义的
<代码>未定义+未定义==NaN

您应该使用其中一个数组的长度:

函数getScramble(移动次数、面、修改器、加扰面、加扰修改器、加扰){
对于(变量i=0;i<移动次数;i++){
var sample=faces[Math.floor(Math.random()*faces.length)];
var mod=modifiers[Math.floor(Math.random()*modifiers.length)];
置乱面[i]=样本;
置乱修饰符[i]=mod;
if(置乱面[i]==置乱面[i-1]){
扰码_faces[i]=faces[Math.floor(Math.random()*faces.length)];
}
}
移除的副本(置乱面、置乱修改器)
对于(变量i=0;i}
getScramble函数的代码部分似乎不完整。你能把完整的代码部分贴出来让我们看看吗?是的,我刚刚意识到,在我贴出来之后,我没有复制整个内容。我不确定它是否与问题有关,但是
var new\u arr=arr不制作数组的副本。两个变量仍然引用同一个数组。将空数组分配给变量后,立即执行
new\u arr.pop()
有什么意义?没有什么可以从阵列中删除的。新的_arr.pop()从阵列中删除了最后一件事情,我真的不需要这样做,但我删除了它,它没有什么区别,设置一个我可以更容易操作的新阵列有助于清理ram,并有助于电池寿命,就像手表一样