为了账号安全,请及时绑定邮箱和手机立即绑定

为什么JS总是返回'无法读取未定义的属性'推送'?

为什么JS总是返回'无法读取未定义的属性'推送'?

波斯汪 2021-11-18 20:35:26
好吧,我看到了这个问题的解决方案,但我不清楚为什么它对我不起作用?我使用 socket.io// 这是房间var rooms = {            "1": [],            "2": [],            "3": [],            "4": [],            "5": []};这是听众socket.on('joinRoom', function (data) {}为什么rooms[1].push(1); // work?为什么rooms["1"].push(1); // work?为什么rooms[data.room].push(1); // not work?为什么rooms["" + data.room].push(1) not work?    为什么rooms[data.room] = [];rooms[data.room] = 1; // work?data.room返回1;
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

即使条件不是那么清楚(特别是,不知道是什么data),以下可能有效的唯一原因:


rooms[data.room] = [];

rooms[data.room] = 1;

同时这不会:


rooms[data.room].push(1);

是否data.room返回了尚未成为关键的东西rooms。


尝试这样做rooms[data.room] = 1;,然后console.log(rooms);您很可能会找到 6 个而不是 5 个。


顺便说一句,当您设置键/访问其值时,无需将您的键转换为字符串。它是自动转换的。它甚至可以转换对象(到 string [object Object])。



查看完整回答
反对 回复 2021-11-18
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信