Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript生成的数字总是相同的_Javascript - Fatal编程技术网

JavaScript生成的数字总是相同的

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

我试图生成一个数字,它不会替换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 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"
     }
}