Javascript 如何将对象添加到arraylist
向列表中添加对象时遇到问题。我有一个楼层列表,每层都有房间。我可以添加楼层,但我不知道如何将房间添加到楼层列表中 我试图获取楼层[索引]或id,但不起作用。我现在该怎么办Javascript 如何将对象添加到arraylist,javascript,arrays,react-native,Javascript,Arrays,React Native,向列表中添加对象时遇到问题。我有一个楼层列表,每层都有房间。我可以添加楼层,但我不知道如何将房间添加到楼层列表中 我试图获取楼层[索引]或id,但不起作用。我现在该怎么办 export default class HomeWork extends Component { constructor() { super(); this.state = { floors: [ {
export default class HomeWork extends Component {
constructor() {
super();
this.state = {
floors: [
{
floorId: 1, name: 'floor1', rooms: [
{ roomId: 1, name: 'new room' },
{ roomId: 2, name: 'new room' }]
},
{
floorId: 2, name: 'floor2', rooms: [
{ roomId: 1, name: 'new room' },]
}
]
}
}
addRoom(index) {
const RoomArr = [...this.state.floors[index].rooms]
RoomArr.push(
{ id: 2, roomName: 'New Room' });
this.setState({
// Stuck here too
})
}
render() {
return (
<View style={styles.parent}>
<View >
<FlatList
data={(this.state.floors)}
renderItem={({ item }) => {
return (
<View>
<View >
<Text>Floor {item.floorNumber}</Text>
<Text>Room per Floor:</Text>
<Text >{item.rooms.length}</Text>
<TouchableOpacity onPress={(index) => { this.addRoom(index) }}>
<Image source={Images.plusIcon}></Image>
</TouchableOpacity>
</View>
<FlatList
data={(item.rooms)}
numColumns={4}
renderItem={({ item }) => {
return (
<View>
<Text>{item.roomName}</Text>
</View>
)
}}
></FlatList>
</View>
)
}}
></FlatList>
</View>
</View>
)
}
}
导出默认类组件{
构造函数(){
超级();
此.state={
楼层:[
{
楼板:1,名称:“楼板1”,房间:[
{roomId:1,名称:'新房间'},
{roomId:2,名称:'新房间'}]
},
{
楼板:2,名称:“楼板2”,房间:[
{roomId:1,名称:'新房间'},]
}
]
}
}
地址室(索引){
const RoomArr=[…this.state.floors[index].rooms]
推(
{id:2,roomName:'新房间'});
这是我的国家({
//我也被困在这里了
})
}
render(){
返回(
{
返回(
楼层{item.floorNumber}
每层房间:
{item.rooms.length}
{this.addRoom(index)}>
{
返回(
{item.roomName}
)
}}
>
)
}}
>
)
}
}
我希望至少我可以获得楼层索引您可以使用spread操作符获得楼层,根据索引更新您的特定楼层,然后再次对楼层使用
设置状态
,如下所示:
addRoom(index) {
let floors = [...this.state.floors];
floors[index].rooms.push({ id: 2, roomName: 'New Room' });
this.setState({ floors })
}
您可以使用spread操作符获取楼层,根据索引更新特定楼层,然后再次对楼层使用
setState
,如下所示:
addRoom(index) {
let floors = [...this.state.floors];
floors[index].rooms.push({ id: 2, roomName: 'New Room' });
this.setState({ floors })
}
哦,我忘了把索引放在renderItem中,所以我修复了它,它工作了。顺便说一句,谢谢你抽出时间!哦,我忘了把索引放在renderItem中,所以我修复了它,它工作了。顺便说一句,谢谢你抽出时间!