首页 > 解决方案 > 地图的 Discord.js 问题

问题描述

我为这样存储一些数据

client.data = new Map()
client.data.set("001", {
    content: "test"
})

有没有一种可能的方法来生成地图中不存在的从 001 到 999 的数字?

例如我有这样的地图

Map(2) { '002' => { content: 'test' }, '001' => { content: 'test' } }

我希望生成的数字为 003,因为我尝试过使用 001 和 002:

const data = Array.from(client.orders.keys())


const nums = [];
let i = 1;

while (i < 999) {
    if (!data.includes(i)) {
        nums.push(`${i}`.padStart(3, '0'));
    }

    i++;
}
nums[0]

nums[0]给出地图中已经存在的 001

标签: javascriptdiscord.js

解决方案


为字符串做这件事"001"有点困难。
我假设您将其用作整数。喜欢:

let Data = new Map();
Data.set(1, { content: "Beep boop" });

现在我们应该能够做到这一点

let AddElement = (DataMap, Value) => {
    for(let a = 0; a < 999; a++){
        let dummy = DataMap.get(a);
        if(!dummy){ //If no value for a -- The key dosen't exist
            DataMap.set(a, Value); //Setting new value because the key is unique
            break; //Stop the loop to avoid repeated data
            //We can also use return since it's a function
        }
    }
}

现在我们可以在任何地方调用该函数。
为了测试让我们使用这个例子

let Data = new Map();
Data.set(1, { content: "Beep boop" });
//^^^Old code
AddElement(Data, { content: "PP Poo Poo" });

如果您遇到任何错误,请发表评论


推荐阅读