Javascript 生成未使用的号码
我试图生成一个数字,它不会替换json文件(orders.json)中已经存在的另一个数字,但在我的discord.js bot中,每次生成数字的命令都会生成相同的数字002,甚至在已经存在的情况下再次创建它,替换json文件中的数据,这会给我带来很多问题Javascript 生成未使用的号码,javascript,json,Javascript,Json,我试图生成一个数字,它不会替换json文件(orders.json)中已经存在的另一个数字,但在我的discord.js bot中,每次生成数字的命令都会生成相同的数字002,甚至在已经存在的情况下再次创建它,替换json文件中的数据,这会给我带来很多问题 const json = require('../../orders.json') const keys = Object.keys(json).map(el => parseInt(el)); const nums = []; let
const json = require('../../orders.json')
const keys = Object.keys(json).map(el => parseInt(el));
const nums = [];
let i = 1;
while (i < 999) {
if (!keys.includes(i)) {
nums.push(`${i}`.padStart(3, '0'));
}
i++;
}
orderID = nums[1]
现在它应该创建数字003,因为002已经存在于json文件中,但是它创建了相同的数字来替换数据,这会导致很多问题
这用于discord机器人,它通过不应该这样做的数字来写“订单”
我还试过别的东西
json =
{ "001": "Something"
, "002": { "message": "And more stuff" }
, "003": 42
, "Suddenly": "Okay"
}
const keys = Object.keys(json).map(el => parseInt(el));
console.log(keys);
const nums = [];
i = 1;
while (i < 999) {
if (!keys.includes(i)) {
nums.push(`${i}`.padStart(3, '0'));
}
i++;
}
orderID = nums[0]
console.log(orderID);
现在我简单地用const json=require('../../orders.json')
替换了json={“001”:“Something”,“002”:{“message”:“And more stuff”},“003”:42,“突然”:“Okay”}
,而orders.json有此数据
{
"001": {
"some data here"
}
}
它只记录json中已经存在的“001”,这是我现在遇到的问题让我们尝试在对象()中查找最大的键,然后添加1:
let json={
“001”:“某物”
,“002”:{“消息”:“和更多内容”}
, "003": 42
“突然”:“好的”
}
让新的_编号=(
//获取对象中的当前最大值
马克斯(
…Object.keys(json)
.map(el=>parseInt(el))
.filter(布尔值))+1
).toString().padStart(3,'0');
//找到新密钥
控制台日志(新的_编号);
//使用新键更新对象
json[new_number]=“此处有一些数据”;
log(json)听起来你应该使用数据库而不是JSON文件。我不确定您将如何处理试图添加新行的两个请求的并发性。当您将其替换为实际文件时,您是否使用了console.log并查看了在映射它时会显示什么?什么是钥匙?你核实过内容了吗?我们很难猜测它为什么会失败。
1
2
3
NaN
004
{
"001": {
"some data here"
}
}