gpt4 book ai didi

javascript - 当我删除重复项时,为什么会得到 NaN 值以及魔方打乱生成器的末尾?

转载 作者:行者123 更新时间:2023-12-03 00:25:16 25 4
gpt4 key购买 nike

我正在为 Fitbit 开发一个魔方应用程序,反之亦然,我遇到了从数组中删除重复项的问题,因为一旦从列表末尾删除了重复项,在组合数组时我会收到 NaN 错误,而且这种情况只会发生当我在数组末尾进行拼接时,我无法弄清楚这不起作用的原因

function getScramble(number_of_moves, faces, modifiers, scramble_faces, scramble_modifiers, scramble) {

for (var i = 0; i < number_of_moves; i++) {
var sample = faces[Math.floor(Math.random() * faces.length)];
var mod = modifiers[Math.floor(Math.random() * modifiers.length)];
scramble_faces[i] = sample;
scramble_modifiers[i] = mod;
if (scramble_faces[i] == scramble_faces[i - 1]) {
scramble_faces[i] = faces[Math.floor(Math.random() * faces.length)];
}
}
removeDuplicates(scramble_faces, scramble_modifiers)
for (var i = 0; i < number_of_moves - 2; i++) {
scramble[i] = scramble_faces[i] + scramble_modifiers[i]
}

console.log(scramble);

let demotext = document.getElementById("demotext");
demotext.text = scramble;
scramble = [];
scramble_faces = [];
scramble_modifiers = [];
}

function threebythree() {
var faces = ["U", "D", "L", "R", "F", "B"];
var modifiers = ["", "'", "2"];
var scramble_faces = [];
var scramble_modifiers = [];
var scramble = [];
var number_of_moves = 22;
let Title1 = document.getElementById("title");
Title1.text = "3x3"
getScramble(number_of_moves, faces, modifiers, scramble_faces, scramble_modifiers, scramble, Title1)
}

function removeDuplicates(arr, arr2, number_of_moves) {
var t = 0;
var new_arr = arr;
var new_arr2 = arr2;
for (var i = new_arr.length - 1; i >= 0; i--) {
if (new_arr[i] === new_arr[i - 1]) {
new_arr.splice(i, 1);
new_arr2.splice(i, 1);
}
}
arr = new_arr;
arr2 = new_arr2;
new_arr = [];
new_arr2 = [];
new_arr.pop();
new_arr2.pop();

console.log(arr);
console.log(arr2);
}

最佳答案

scramble_facesscramble_modifiers 的长度最初为 number_of_moves。但是当你删除它们中的重复项后,它可能会更短。但您仍然在下一个 for 循环的限制中使用 number_of_moves 。因此,当您尝试添加不再存在的元素时,您会得到未定义未定义+未定义== NaN

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

function getScramble(number_of_moves, faces, modifiers, scramble_faces, scramble_modifiers, scramble) {

for (var i = 0; i < number_of_moves; i++) {
var sample = faces[Math.floor(Math.random() * faces.length)];
var mod = modifiers[Math.floor(Math.random() * modifiers.length)];
scramble_faces[i] = sample;
scramble_modifiers[i] = mod;
if (scramble_faces[i] == scramble_faces[i - 1]) {
scramble_faces[i] = faces[Math.floor(Math.random() * faces.length)];
}
}
removeDuplicates(scramble_faces, scramble_modifiers)
for (var i = 0; i < scramble_faces.length - 2; i++) {
scramble[i] = scramble_faces[i] + scramble_modifiers[i]
}

console.log(scramble);

let demotext = document.getElementById("demotext");
demotext.text = scramble;
scramble = [];
scramble_faces = [];
scramble_modifiers = [];
}

关于javascript - 当我删除重复项时,为什么会得到 NaN 值以及魔方打乱生成器的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54122924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com