You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue方法中如何用IF/ELSE判断房间是否在joinedRooms数组并执行对应逻辑

问题根源

你原来的代码逻辑错误是将单个room对象和joinedRooms数组整体做全等/不等比较,单个对象永远不可能等于一个数组,所以if分支的判断条件永远为true,才会每次都走加入逻辑。

修复后的代码实现

分两种场景处理判断逻辑:

场景1:room是基础类型值(比如房间ID字符串/数字)

直接用数组的includes方法判断是否存在即可:

methods: {
    joinRoom(room) {
        // 判断指定房间是否不在已加入列表中
        if (!this.$store.state.rooms.joinedRooms.includes(room)) {
            this.$store.dispatch(RoomTypes.JOIN_ROOM, room);
        }
        // 公共逻辑:不管是否已加入,都要切换当前激活房间、关闭弹窗
        this.$store.dispatch(RoomTypes.CURRENT_ROOM, room);
        this.$emit('onClose')
    }
},

场景2:room是对象类型,需要按唯一标识(比如id字段)判断

需要用some方法匹配唯一标识做校验:

methods: {
    joinRoom(room) {
        // 校验当前房间是否已加入:匹配id字段判断是否存在
        const isJoined = this.$store.state.rooms.joinedRooms.some(item => item.id === room.id)
        if (!isJoined) {
            this.$store.dispatch(RoomTypes.JOIN_ROOM, room);
        }
        this.$store.dispatch(RoomTypes.CURRENT_ROOM, room);
        this.$emit('onClose')
    }
},

内容的提问来源于stack exchange,提问作者ArcticMediaRyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:24:01