Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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 forEach循环分配相同的随机数_Javascript_Typescript - Fatal编程技术网

Javascript forEach循环分配相同的随机数

Javascript forEach循环分配相同的随机数,javascript,typescript,Javascript,Typescript,在typescript中,我试图为数组中每个对象的属性分配一个随机数。我尝试了以下代码 uniqueItems.forEach(unique => { unique.humanCode = Math.floor(1000 + Math.random() * 9000).toString(); }); 如果我在forEach循环中输入console.log,我会得到一个不同的数字,但是当我在forEach之后输入console.log对象数组时,所有的随机数都是相同的 编辑:我最初使用

在typescript中,我试图为数组中每个对象的属性分配一个随机数。我尝试了以下代码

uniqueItems.forEach(unique => {
  unique.humanCode = Math.floor(1000 + Math.random() * 9000).toString();
});
如果我在forEach循环中输入console.log,我会得到一个不同的数字,但是当我在forEach之后输入console.log对象数组时,所有的随机数都是相同的

编辑:我最初使用

for (let i = 0; i < this.quantity; i++) {
  this.uniqueItems.push(uniqueItem);
}
for(设i=0;i
这将生成同一对象的数组。这意味着我的数组被分配了最后一个随机数。我在创建数组时使用了扩展操作符修复了这个问题

for (let i = 0; i < this.quantity; i++) {
  this.uniqueItems.push({ ...this.uniqueItem });
}
for(设i=0;i
我尝试了下面的代码,它对我很有效

let uniqueItems=[{
人名代码:0,
},
{
人名代码:0,
},
{
人名代码:0,
},
]
uniqueItems.forEach(唯一=>{
unique.humanCode=Math.floor(1000+Math.random()*9000).toString();
});

控制台日志(唯一项)我已经尝试了下面的代码,它适合我

let uniqueItems=[{
人名代码:0,
},
{
人名代码:0,
},
{
人名代码:0,
},
]
uniqueItems.forEach(唯一=>{
unique.humanCode=Math.floor(1000+Math.random()*9000).toString();
});

控制台日志(唯一项)您可以使用map来迭代项目,并为数组中的每个项目返回一个新对象。这还将确保您不会通过引用更新对象。您应该阅读JavaScript中的可变性。这是JS中的一个重要概念

uniqueItems.map(unique => ({
  ...unique, 
  humanCode: Math.floor(1000 + Math.random() * 9000).toString(),
}));

您可以使用map来迭代项目,并为数组中的每个项目返回一个新对象。这还将确保您不会通过引用更新对象。您应该阅读JavaScript中的可变性。这是JS中的一个重要概念

uniqueItems.map(unique => ({
  ...unique, 
  humanCode: Math.floor(1000 + Math.random() * 9000).toString(),
}));

什么对象数组?听起来你有一个对象数组,它们都是相同的对象Kryten是对的<代码>唯一项
不是唯一项。演示如何生成阵列。您可能多次将同一对象添加到数组中,而不是创建新对象。您使用console.log、unique或unique.humanCode打印什么?什么对象数组?听起来您有一个对象数组,它们都是相同的对象Kryten是对的<代码>唯一项
不是唯一项。演示如何生成阵列。您可能多次将同一对象添加到数组中,而不是创建新对象。使用console.log、unique或unique.humanCode打印什么?在forEach中更改对象不是一种好做法。在这种情况下,最好使用
map
。谢谢@KiaiFighter!我只是想帮助他使用现有的代码。在forEach中对对象进行变异不是一种好的做法。在这种情况下,最好使用
map
。谢谢@KiaiFighter!我只是想帮助他使用现有的代码。我的数组是同一个对象的数组。为了解决这个问题,我在创建数组`{…this.uniqueItem}时使用了扩展运算符。我的数组是同一对象的数组。为了解决这个问题,我在创建数组`{…this.uniqueItem}时使用了扩展运算符