我正在尝试为国际象棋创建一个 FEN 符号转换器。我已经决定解决这个问题的最佳方法是从字符串中删除我不需要的任何不必要的值。这是它的样子。
rnbqkbnr/pppppppp/8/
这些都是我的代码中的字符串。我已经找到了每个文件末尾的解决方案,它由/
字符串中的 表示。但我的新问题是去掉数字值并添加回空白方块以覆盖它们。
当您在 FEN 中看到一个数字时,这实际上是国际象棋桌上有多少个空方格,直到另一个棋子。我的想法再次为自己简化,是将这些数字转换8
为11111111
一系列数字,代表每个必须为空的正方形。
虽然在实践中,我假设我只能退出并开始用 填充该索引splice
,这似乎是可行的选择,但不幸的是,当将数字移动到不同的地方时会出现相当多的错误。8
1
有人会有更好的选择吗?是的,我知道已经有库可以做到这一点,但是如果你不尝试重新发明轮子,那么编码的乐趣是什么。
correctFen 函数 - 映射字符串以查找任何数字
const correctFen = () => {
newFen.map((pos, index) => {
if (Number(pos) && pos !== '/'){
for (let i = 0; i < Number(pos); i++) {
console.log('firing')
setNewFen(addAfter(newFen, index + i, '1'))
}
}
})
console.log(newFen)
figureOutPos()
}
在看了这个之后,它并没有真正删除我想要的索引,这可能是一个问题,它1
在最后一个之后添加了 s/
function addAfter(array, index, newItem) {
return [
...array.slice(0, index),
newItem,
...array.slice(index)
];
}