JavaScript生成的数字总是相同的
我试图生成一个数字,它不会替换json文件(orders.json)中已经存在的另一个数字,但在我的discord.js bot中,每次生成数字的命令都会生成相同的数字002,甚至在已经存在的情况下再次创建它,替换json文件中的数据,这会给我带来很多问题JavaScript生成的数字总是相同的,javascript,Javascript,我试图生成一个数字,它不会替换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机器人,它通过不应该这样做的数字来写“订单”
编辑:使用Richard的答案
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”第一个未使用的数字将是
nums[0]
。也许这就是您需要用作下一个orderID
的内容
json=
{“001”:“某物”
,“002”:{“消息”:“和更多内容”}
, "003": 42
“突然”:“好的”
}
constkeys=Object.keys(json.map)(el=>parseInt(el));
控制台日志(键);
常量nums=[];
i=1;
而(i<999){
如果(!键包括(i)){
push(`${i}`.padStart(3,'0');
}
i++;
}
orderID=nums[0]
log(orderID)
您可能需要parseInt(el,10)
来确保使用正确的单位解析内容。在javascript控制台中键入020
以了解我的意思。请显示console.log(键)
和console.log(nums)
console.log(键)
记录空消息和console.log(nums)
记录从001到9990的数字谢谢,但使用它时仍然会生成001,即使json文件中已经存在001,我编辑了我的问题来解释这个问题
1
2
3
NaN
004
{
"001": {
"some data here"
}
}