我正在使用React.js创建一个地牢爬虫游戏,并且正在使用Array.fill(0)来初始化棋盘。但是当我在2d数组内设置元素时,它将整个Array(列)设置为,'player'
而不是单个元素。我有另一个createBoard()
功能,注释掉,可以正常工作。那么,为什么会发生这种情况?如何正确使用Array.fill?
这是我的董事会组件:
import React, {Component} from 'react';
import Cell from './Cell';
class Board extends Component {
constructor(props) {
super(props);
const dim = 10;
let board = this.createBoard(dim, dim);
this.state = {
board: board,
};
}
createBoard = (row, col) => {
return Array(row).fill(Array(col).fill(0));
}
// createBoard = (rows, cols) => {
// let board = [];
// for (let i = 0; i < rows; i++) {
// let row = [];
// for (let j = 0; j < cols; j++) {
// row.push(0);
// }
// board.push(row);
// }
// console.log(board);
// return board;
// }
movePlayer = () => {
}
componentDidMount() {
this.setPiece(this.props.player);
}
setPiece = (loc) => {
let brd = this.state.board;
const row = loc[0];
const col = loc[1];
console.log('row: '+row+' col: '+col+' ==='+brd[row][col]);
brd[row][col] = 'player';
console.log('setPiece: ',brd);
this.setState({board: brd});
}
renderCell = (cell) => {
switch(cell) {
case 0:
return 'floor';
case 1:
return 'wall';
case 'player':
return 'player';
default:
return 'floor';
}
}
render() {
return (
<div className='board'>
{this.state.board.map((row, i) => {
return row.map((cell, j) => {
return (
<Cell
key={[i, j]}
loc={[i, j]}
type={this.renderCell(cell)}
/>
);
})
})}
</div>
);
}
}
export default Board;
您可以通过Array.fill的方式填充2D数组:
let arr = Array(5).fill(0).map(x => Array(5).fill(0))
问题内容: 我今天发现了一件奇怪的事情,想知道是否有人可以阐明其中的区别? 运行完每个循环后,没有改变,但是在每个元素中添加了一个。我实际上使用该版本在循环内写入初始化的NumPy数组。 问题答案: 不同之处在于,一个修改数据结构本身(就地操作),而另一个仅 重新分配 变量。 仅出于完整性考虑: 是 不是总是 做就地操作,有(至少)三种例外情况: 如果 没有实现 的则方法的声明仅仅是一个速记。如果
问题内容: 我将所有值都放在一个表中,并按照要求进行格式化。我必须根据页面顶部下拉菜单中的用户选择来更改网站上的语言。 如果我使用语言代码,例如,则可以正常工作。如果我将其用作语言代码,则无法使用。可能是什么问题?哪个是正确的方法? 问题答案: “ en”是ISO 639指定的语言代码,而US是3166指定的国家代码。 在Java中,Locale对象将语言识别为 languageCode_coun
问题内容: 在包含forEach循环的行上引发了出站异常,但是据我所知,此代码没有错。for循环从char数组的元素0开始,一直循环直到到达最后一个元素…但是当我尝试使用更长的for循环来执行此代码时,即 该代码按预期工作。 为什么在这种情况下for循环起作用,而forEach循环不起作用? 问题答案: 如果您需要在循环中使用索引访问某些内容,请使用for,而不是foreach(已增强)。 现在,
问题内容: 和Numpy有什么区别?我在哪里可以找到numpy源代码中的实现? 问题答案: 只是创建一个便利函数; 它本身不是类。 您也可以使用创建数组,但不建议这样做。来自以下文档的字符串: 阵列应该使用来构造,或…这里给出的参数是指低级方法(用于实例化阵列)。 实现的大部分内容都在C代码中(在multiarray中),但是您可以在这里开始查看ndarray接口: https://github.
Numpy中的和之间有什么区别?我在哪里可以找到numpy源代码中的实现?
这里有两个相同的代码,唯一的区别是我在第一个代码中使用的是在for循环内初始化的字符串,另一方面我使用的是在for循环外初始化的字符串,但得到的答案仍然不同 在for循环内初始化的字符串: 输出为以下形状: 在for循环外部初始化的字符串: 输出为以下形状: 我真的很困惑正在发生的事情,提前谢谢你。