javascript - 使用react显示多维数组/矩阵

标签 javascript reactjs matrix multidimensional-array

我最近开始了 React,但我陷入了一个矩阵问题。列和行被视为用户的输入,并应显示矩阵作为输出。这是我的代码:

class App extends Component {
  constructor(props){
    super(props);
    this.state = {
      array1 : [],
      array2 : [],
      col1: null,
      row1 : null,

    }
    this.handleCol1Change = this.handleCol1Change.bind(this);
    this.handleRow1Change = this.handleRow1Change.bind(this);
  }

  handleCol1Change(e){
    this.setState({
      col1 : e.target.value
    })
  }

  handleRow1Change(e){
    this.setState({
      row1 : e.target.value
    })
  }

  createarray1(){
    for(let i=0; i < this.state.row1; i++){
      let row = []
      this.state.array1.push(row);
      for(let j=0; j < this.state.col1; j++){
        let col = "1"
        this.state.array1.push(col);
      }
      return this.state.array1
    }
  }

  handleSubmit(){
    this.createarray1()
  }

  render() {
    return (
      <div>
        <h3>Enter Dimensions</h3>
        <form>
          <h1>Matrix 1</h1>
          <input placeholder="Columns" onChange={this.handleCol1Change}/>
          <input placeholder="Rows" onChange={this.handleRow1Change}/>

          <button type="submit" onSubmit={this.handleSubmit.bind(this)}>Enter Dimensions</button>
        </form>
        {console.log("array",this.state.array1,"array2",this.state.array2)}
      </div>
    );
  }
} 

我相信错误出在我的创建数组逻辑中。在 console.log 上,它显示我的数组没有存储任何内容。关于我做错了什么有什么想法吗? TIA

最佳答案

createArray() 方法中有几个问题,您需要构建行,然后将其添加到数组中。另外,正如@ageoff所说,您需要调用setState而不是直接使用this.state。您的代码已更改为与您当前的代码相似 - 但它应该可以工作。

createarray1 现在仅返回数组,并且 handleSubmit 函数设置状态。

编辑:我现在更改了createarray1,使其成为一个纯函数,并且您可以传入 rowCount 和 colCount。现在您可以检查 createarray1 是否独立工作:

  createarray1(rowCount, colCount){
    let myarr = [];
    for(let i=0; i < rowCount; i++){
      let row = []
      for(let j=0; j < colCount; j++){
        let col = "1"
        row.push(col);
      }
      myarr.push(row);
    }
    return myarr;
  }

  handleSubmit(){
    this.setState({
      array1: this.createarray1(this.state.row1, this.state.col1)
    });
  }

这是它自己的函数,表明它正在创建正确的数组:

let createarray1 = function(rowCount, colCount){
  let myarr = [];
  for(let i=0; i < rowCount; i++){
    let row = []
    for(let j=0; j < colCount; j++){
      let col = "1"
      row.push(col);
    }
    myarr.push(row);
  }
  return myarr;
}
console.log(createarray1(2,3));

关于javascript - 使用react显示多维数组/矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52190172/

相关文章:

javascript - 在javascript中用天数计算月份

javascript - 从 observable 中获取有趣的字段

asyncpostbacktrigger 之后未调用 Javascript 函数

javascript - 三元不更新 React 中的 View

javascript - 使用 Flow react 无状态函数组件

c++ - 单击窗口 x 轴的末端时,鼠标单击会导致 OpenGL 中的光线创建不正确吗?

javascript - 如何将MediaFile对象转换为File对象?

javascript - 函数未使用钩子(Hook)指向状态变量的更新值

r - 如何绘制 geom_tile 图

javascript - JavaScript 中的方阵转置