JavaScript - 从for循环存储的所有内容都是未定义的

时间:2017-02-11 22:56:49

标签: javascript arrays for-loop undefined

我最近开始使用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;
&#13;
&#13;

如果需要,这是Position课程。

&#13;
&#13;
class Position {
  constructor(x, y) {
    this.x = x;
    this.y = y;
    this.piece = null;
  }
}
&#13;
&#13;
&#13;

我运行createBoard(),然后尝试使用getPosition()。我说我的代码不能使用null值。如果我查看控制台,它会继续记录&#34;(未定义,未定义)。&#34;我做了一点研究,但我唯一能找到的就是异步。我试着调查一下,但我无法弄清楚如何修复它。有谁知道如何解决这个问题?

2 个答案:

答案 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;
  };
}