Javascript 如何将对象添加到arraylist

Javascript 如何将对象添加到arraylist,javascript,arrays,react-native,Javascript,Arrays,React Native,向列表中添加对象时遇到问题。我有一个楼层列表,每层都有房间。我可以添加楼层,但我不知道如何将房间添加到楼层列表中 我试图获取楼层[索引]或id,但不起作用。我现在该怎么办 export default class HomeWork extends Component { constructor() { super(); this.state = { floors: [ {

向列表中添加对象时遇到问题。我有一个楼层列表,每层都有房间。我可以添加楼层,但我不知道如何将房间添加到楼层列表中

我试图获取楼层[索引]或id,但不起作用。我现在该怎么办

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中,所以我修复了它,它工作了。顺便说一句,谢谢你抽出时间!