问题描述
我编写了一个小算法,用于检查数组标记的元素是否具有相似的坐标(在此示例中,虚拟数据不要太当真)
但是我在变量position
上出现了奇怪的行为。如果没有相似的数组元素,则变量将毫无理由地增加。
如果运行此代码,您将看到position
从2到4的神奇变化,从而导致错误。我不知道为什么。
let activeArrayPos = 0;
let hexCoordinates = [];
let stamps = [
{vertices:[{x: 5,y: 10},{x: 10,y: 20}]},{vertices:[{x: 15,y: 20},{x: 40,y: 30}]},{vertices:[{x: 35,y: 60},{x: 70,y: 70}]},{vertices:[{x: 30,y: 40},{x: 50,y: 50}]},{vertices:[{x: 25,{x: 60,y: 60}]},{vertices:[{x: 5,{x: 30,y: 40}]},];
function findHexpolyPoints(position) {
console.log("re call function")
for (let k = 0; k < stamps.length; ++k) {
let coordinates = [];
console.log("POS: "+position)
if (k === position) continue;
if (stamps[position].vertices[0].x === stamps[k].vertices[0].x && stamps[position].vertices[0].y === stamps[k].vertices[0].y) {
if (hexCoordinates[activeArrayPos]) {
coordinates = [stamps[k].vertices[1].x,stamps[k].vertices[1].y];
} else {
coordinates = [stamps[position].vertices[0].x,stamps[position].vertices[0].y,stamps[k].vertices[1].x,stamps[k].vertices[1].y];
}
} else if (stamps[position].vertices[1].x === stamps[k].vertices[1].x && stamps[position].vertices[1].y === stamps[k].vertices[1].y) {
if (hexCoordinates[activeArrayPos]) {
coordinates = [stamps[k].vertices[0].x,stamps[k].vertices[0].y];
} else {
coordinates = [stamps[position].vertices[1].x,stamps[position].vertices[1].y,stamps[k].vertices[0].x,stamps[k].vertices[0].y];
}
} else if (stamps[position].vertices[0].x === stamps[k].vertices[1].x && stamps[position].vertices[0].y === stamps[k].vertices[1].y) {
if (hexCoordinates[activeArrayPos]) {
coordinates = [stamps[k].vertices[0].x,stamps[k].vertices[0].y];
} else {
coordinates = [stamps[position].vertices[0].x,stamps[k].vertices[0].y];
}
} else if (stamps[position].vertices[1].x === stamps[k].vertices[0].x && stamps[position].vertices[1].y === stamps[k].vertices[0].y) {
if (hexCoordinates[activeArrayPos]) {
coordinates = [stamps[k].vertices[1].x,stamps[k].vertices[1].y];
} else {
coordinates = [stamps[position].vertices[1].x,stamps[k].vertices[1].y];
}
}
if (coordinates.length > 0) {
stamps.splice(position,1);
if (hexCoordinates[activeArrayPos]) {
hexCoordinates[activeArrayPos].push(...coordinates);
if (hexCoordinates[activeArrayPos].length === 12) {
activeArrayPos += 1;
findHexpolyPoints(0);
}
} else {
hexCoordinates.push(coordinates);
}
if (k > position) {
findHexpolyPoints(k - 1);
} else {
findHexpolyPoints(k);
}
}
}
}
findHexpolyPoints(0);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)