javascript - 如何创建以变量为键的对象?
问题描述
我有一个最初是空的对象,但它最终看起来像这样:
numusers = { room1 : 1, room2 : 5, room3 : 2};
这将根据情况而有所不同。如果某个用户进入 room1,那么此时应该创建 room1 并且值将是 1,如果其他用户同样进入 room2,但是如果另一个用户进入 room1,那么值将不得不增加到 2,依此类推。
我试过这个:
numusers = { room1 : 1, room2 : 5, room3 : 2};
let initnum = 0; //the initial value each room will have
var inroom = "room1"; //this is the room this user entered
numusers.push({ inroom : ++initnum });
它没有用,我想不出不同的方法。我应该在这里做什么?
谢谢你。
解决方案
numusers
是一个对象,而不是一个数组。
如果要设置属性的值,可以使用括号表示法:
let initnum = 0;
var inroom = "room1";
numusers = {};
numusers[inroom] = initnum
console.log(numusers)
要在输入重复键时递增,您可以首先检查该属性是否存在:
newusers = {}
function process(room){
newusers[room] = newusers[room] ? newusers[room]+1 : 1;
console.log(newusers)
}
process("room1")
process("room1")
process("room2")
推荐阅读
- ffmpeg - 使用 FFMPEG:如何在单个视频文件中重新排序场景?
- c++ - SDL_CreateRGBSurfaceFrom / SDL_BlitSurface - 我在模拟器上看到旧帧
- java - 在 Java、GreenFoot 中找不到符号
- scala - Binding.scala:如何在 Checkbox 中定义已选中
- powershell - 如何以分钟为单位获取进程的开始时间?
- sql - 每个子集的新列
- rest - 尝试添加子资源但没有父资源时正确的 HTTP 代码
- qt - QPainter 忽略paintEvent 内部的剪辑
- git - 如何设置我的 AWS SageMaker 存储库用户的名称?
- visual-studio-code - 如何打开自动关闭标签和自动查找关闭标签