如何向数组添加元素和对象

时间:2018-06-05 23:38:17

标签: javascript reactjs

我有一个对象数组,其中一个键/值对是另一个数组。对象数组是“sections”,键/值数组是“data”。我需要在'data'数组中添加元素,在'sections'数组中添加新对象。

我花了一段时间,但下面的代码似乎有效。如果这是“正确”的方式或建议替代方法,有人会评论吗?

在代码注释中,我展示了如何使用扩展符号向'data'数组添加元素。我们还可以使用扩展符号来表示部分:

  this.setState({...this.state,sections: 
  [...newSections,{title:this.state.key,data:this.state.input.split(',')}] })

this.state={
  show: false,
  addDisplay:true,
  key:'',
  sections: [
    {
      title:'primary', 
      data:[]
    },
  ]
}

update = () => 
{
  console.log('UPDATESTART',this.state)
  for(var i = 0; i< this.state.input.length; i++)
  {
  //if someone enters an array with no key do nothing
    if(this.state.input[i] === ',' && this.state.key==='')
    {
      return
    }
  }


  var newSections=[];

  if(this.state.key==='')
  {
    newSections=[...this.state.sections]
    newSections[0].data.push(this.state.input) 
    // or newSections[0].data=[...newSections[0].data,this.state.input]
    this.setState({...this.state,sections: newSections })
  }
  else
  {
    newSections=[...this.state.sections]
    console.log('AA',newSections)
    newSections.push({title:this.state.key,data:this.state.input.split(',')})
    this.setState({...this.state,sections: newSections })
  }

  this.setState({input:'',key:'',show:false},function(){
  console.log('UPDATEEND',this.state)
})

0 个答案:

没有答案