我有一个对象数组,其中一个键/值对是另一个数组。对象数组是“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)
})