javascript set - 将值添加到集合内对象的数组中

标签 javascript arrays node.js object discord.js

我正在尝试制作一组​​集合来制作类似的东西

{
    'user1': ["value#1", "value#2",..."value#N"],
    'user2': ["value#2",..."value#N"],
    'userN': [..."value#N"]
}

然后在 5 秒后删除 value#x(例如)。

这是我的代码:

var myset = new Set();
var ran = myset[USERID] = commandNumber;

//i'm trying to make "if myset contains userNumber AND commandName" return, 
//if its not, run someFunction() and continue
if (myset.has(ran)) return;
someFunction();

myset.add(ran);
setTimeout(() => {
  myset.delete(ran);
}, 5000);

我得到的不是像第一个代码那样的输出,而是这个输出

Set { 'command1', 'command2',
'USER1': 'command3',
'USER2': 'command4'
'USERN': 'commandN'
}

如果您有任何问题,请随时发表评论,如果我的问题难以理解,很抱歉

最佳答案

不需要为此目的设置一套,但我做了一个小型 POC,可以帮助您实现所需的解决方案:

'use strict';

const mySet = new Set();
const mySetMetadata = {};

const removeFromSet = (userKey, commandName) => {
  const commands = mySetMetadata[userKey] || [];
  if (commands.includes(commandName)) {
    mySetMetadata[userKey] = commands.filter(c => c !== commandName);

    if (mySetMetadata[userKey].length === 0) {
      mySet.delete(userKey);
      mySetMetadata[userKey] = undefined;
    }
  }
};

/**
 * Add relation between an userKey and a command
 * @param {String} userKey
 * @param {Array} commands Array of commands
 */
const addToSet = (userkey, commands) => {
  mySet.add(userkey);

  if (typeof mySetMetadata[userkey] === 'undefined') {
    mySetMetadata[userkey] = commands;
  } else {
    mySetMetadata[userKey] = [...mySetMetadata[userKey], ...commands]
  }  
}

// Populate with demo data
addToSet('user1', ['value#1', 'value#2', 'value#N']);
addToSet('user2', ['value#2', 'value#N']);
addToSet('user3', ['value#N']);

// Set up a timeout for a given user + key
setTimeout(() => {
  removeFromSet('user1', 'value#2');
}, 5000);

关于javascript set - 将值添加到集合内对象的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50776255/

相关文章:

c - 使用 C 返回数组

javascript - 如何将整数数组转换为对象数组?

node.js - Windows 7 : npm uglifyjs "is not recognized as an internal or external command"

node.js - Mongoose 中的方法和统计有什么区别?

javascript - this.setState 不是函数

javascript - d3 条形图,具有固定条形宽度和固定间距以在中心轴线上对齐

javascript - 明确的增量和添加错误的结果

javascript - 通过 javascript 填充文本框时,使用 ng-model 输入未绑定(bind)

javascript - Underscore JS - 对对象数组进行排序

javascript - 如何使用 Puppeteer 解决分页网页抓取问题?正确定位 Node ,但在 for 循环中单击它不断抛出错误