我正在编写一个简单的 javascript 代码来解析和验证用 Forsyth–Edwards Notation (FEN) 编写的国际象棋位置。
此符号中的默认国际象棋位置由下式给出,
const defaultFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
有 6 个组件,我使用 String.split(" ") 按空格分割组件,现在我想进一步将结果数组的第一个元素用 "/" 分割,这将给出每个等级的状态。
运行这段代码给了我一个不直观的结果......
const defaultFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
const locations = defaultFEN.split(" ")[0];
for (let rank in locations.split("/")) {
console.log(rank);
}
我预计输出是 8 个字符串,由“/”分隔,位于 defaultFEN 字符串的第一部分。相反,我得到了数字 0-7 打印出来。
有趣的是,如果我手动访问这个数组,console.log(locations.split("/")[i])
对于区间 [0-7] 中的任何数字 i,我都会看到我想要的结果。
为什么在使用迭代循环时会打印出数字 0-7,但如果我使用基于普通索引的 for 循环,它会完全按预期工作?