Javascript 使用for循环创建具有唯一ID的对象
因此,我试图生成一个数组,该数组将包含多个对象,其中一个包含另一个数组。每个对象都应该有自己唯一的id,但当使用for循环时,每个批处理都有具有相同重复id的对象。使用i变量甚至添加随机数值似乎都不起作用。这在javascript中甚至可以实现吗 Test.jsJavascript 使用for循环创建具有唯一ID的对象,javascript,arrays,for-loop,object,Javascript,Arrays,For Loop,Object,因此,我试图生成一个数组,该数组将包含多个对象,其中一个包含另一个数组。每个对象都应该有自己唯一的id,但当使用for循环时,每个批处理都有具有相同重复id的对象。使用i变量甚至添加随机数值似乎都不起作用。这在javascript中甚至可以实现吗 Test.js const testFunc = () => { let resultArray = [] let testObj = {} let testArray = [] const rn = () => {
const testFunc = () => {
let resultArray = []
let testObj = {}
let testArray = []
const rn = () => {
return ~~(Math.random() * 1000)
}
for (let i = 0; i < 3; i++) {
testObj = { id: rn() }
testArray.push(testObj)
testObj = {}
}
for (let i = 0; i < 3; i++) {
resultArray.push(testArray)
}
console.log(resultArray)
return resultArray
}
结果我得到:
[
[
{ id: 859, text: 0 },
{ id: 232, text: 1 },
{ id: 240, text: 2 },
{ id: 638, text: 3 },
{ id: 393, text: 4 }
],
[
{ id: 859, text: 0 },
{ id: 232, text: 1 },
{ id: 240, text: 2 },
{ id: 638, text: 3 },
{ id: 393, text: 4 }
],
[
{ id: 859, text: 0 },
{ id: 232, text: 1 },
{ id: 240, text: 2 },
{ id: 638, text: 3 },
{ id: 393, text: 4 }
]
]
将
testArray
推三次到resultArray
。而是在循环中生成testArray
,将其推送到resultArray
,并添加以下项目:
consttestfunc=()=>{
常量结果数组=[]
常数rn=()=>{
return~~~(Math.random()*1000)
}
for(设i=0;i<3;i++){
常数testArray=[]
结果数组推送(testArray)
for(设i=0;i<3;i++){
常量testObj={id:rn()}
testArray.push(testObj)
}
}
返回结果数组
}
log(testFunc())
您只能创建一个子数组。线路
let testArray = []
只跑一次,你就跑一次
resultArray.push(testArray)
3次-因此在结果中,resultArray
中的所有子数组都引用相同的testArray
而是显式创建一个新数组,并使用嵌套循环,以便总共有3x3次迭代:
let resultArray=[]
设testObj={}
常数rn=()=>{
return~~~(Math.random()*1000)
}
for(设i=0;i<3;i++){
常数testArray=[]
for(设i=0;i<3;i++){
常量testObj={
编号:rn()
}
testArray.push(testObj)
}
结果数组推送(testArray)
}
console.log(resultArray)
如果您选择的是0到999之间的随机数,那么id冲突将非常麻烦。这就是所谓的生日悖论。在您的情况下,只有38项才能有50%的机会拥有两个相同的ID。请保留一个计数器,或使用npm uuid包中的uuid()。@CharlesBamford感谢您的评论!我也试过uuid(),但结果完全一样——只是它不是数字。这是因为答案解决了问题。所以我只推了三个相同的项目。难怪他们都有相同的身份证。非常感谢。谢谢你的评论!你的解释使我头脑清醒了许多
resultArray.push(testArray)