我最近开始使用JavaScript编程语言。不,这不是我的第一语言,但这是我第一次使用它。我正在尝试使用HTML5画布功能创建国际象棋程序。我正在使用for循环来创建一个包含棋子的所有位置的数组。我遇到了一个问题;它将所有坐标存储为未定义。 Bellow是存储这些值的函数的代码。
var board = [];
function createBoard() {
var integer = 0;
for (var i = 0; i < 8; i++) {
for (var j = 0; j < 8; j++) {
board[integer] = new Position(i, j);
integer++;
}
}
}
function replacePosition(position1, position2) {
var i = board.indexOf(position1);
board[i] = position2;
}
function getPosition(x, y) {
for (var position in board) {
console.log("(" + position.x + "," + position.y + ")");
if (position.x == x && position.y == y) {
return position;
}
}
return null;
&#13;
如果需要,这是Position课程。
class Position {
constructor(x, y) {
this.x = x;
this.y = y;
this.piece = null;
}
}
&#13;
我运行createBoard(),然后尝试使用getPosition()。我说我的代码不能使用null值。如果我查看控制台,它会继续记录&#34;(未定义,未定义)。&#34;我做了一点研究,但我唯一能找到的就是异步。我试着调查一下,但我无法弄清楚如何修复它。有谁知道如何解决这个问题?
答案 0 :(得分:2)
我会做的
import csv
Horse_types = []
with open("HORSES.csv") as f:
for row in csv.reader(f):
for horse in row:
print (horse)
Horse_types.append(horse)
for ht in Horse_types:
with open("%s.txt" % ht, "w") as f:
# More stuff here?
f.close()
答案 1 :(得分:1)
JavaScript中的for ... in
循环遍历对象的属性名称,而不是属性值。
You shouldn't use a for ... in
loop anyway.使用带有数字索引变量的for
循环,或者使用.forEach()
或其他Array迭代器方法之一(在本例中可能是.find()
):
function getPosition(x, y) {
for (var i = 0; i < board.length; ++i) {
var position = board[i];
console.log("(" + position.x + "," + position.y + ")");
if (position.x == x && position.y == y) {
return position;
}
}
return null;
}
或
function getPosition(x, y) {
return board.find(function(p) {
if (p && p.x == x && p.y == y)
return p;
return false;
};
}