Javascript forEach循环分配相同的随机数
在typescript中,我试图为数组中每个对象的属性分配一个随机数。我尝试了以下代码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对象数组时,所有的随机数都是相同的 编辑:我最初使用
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}时使用了扩展运算符