Javascript 2个不同大小的数组,一旦达到最大索引,就在循环中重用一个数组

Javascript 2个不同大小的数组,一旦达到最大索引,就在循环中重用一个数组,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我有两个这样结构的数组,我想在较大的数组中循环,并使用较小数组中的随机ID为其分配一个属性 //实际数组长度为140 常量用户=[ { 姓名:“约翰·罗伯茨”, uid:“49ikds_DM3IDMSMMI9SZ” }, { 姓名:“彼得·琼斯”, uid:“fmi33_sm39imsz9z9nb” } ] //实际阵列长度为424 常数车=[ { 制造商:“宝马”, 型号:“320d”, 年份:“2010年”, 用户:空 }, { 制造商:“宝马”, 型号:“530d”, 年:“2018”,

我有两个这样结构的数组,我想在较大的数组中循环,并使用较小数组中的随机ID为其分配一个属性

//实际数组长度为140
常量用户=[
{
姓名:“约翰·罗伯茨”,
uid:“49ikds_DM3IDMSMMI9SZ”
},
{
姓名:“彼得·琼斯”,
uid:“fmi33_sm39imsz9z9nb”
}
]
//实际阵列长度为424
常数车=[
{
制造商:“宝马”,
型号:“320d”,
年份:“2010年”,
用户:空
},
{
制造商:“宝马”,
型号:“530d”,
年:“2018”,
用户:空
},
{
制造商:“奥迪”,
型号:“RS6”,
年份:“2014年”,
用户:空
}
]
for(设i=0;i
我基本上想重新使用小
用户
数组。在上面的示例中,一旦变量
i
为2或更大,则
用户[2]
未定义


有谁能推荐一个优雅的解决方案来帮助我解决这个问题吗?

您只需测试您的
user[i]
var并输入一个默认值:

for(let i = 0; i < cars.length; i++){
  //if index is 2 or greater in this example. users[2] will be undefined
  cars[i].user = users[i] && users[i].uid || /*Default value:*/ null;
}

您只需测试
user[i]
var并输入一个默认值:

for(let i = 0; i < cars.length; i++){
  //if index is 2 or greater in this example. users[2] will be undefined
  cars[i].user = users[i] && users[i].uid || /*Default value:*/ null;
}

您可以使用
%
始终具有正确的标识并重用用户

const用户=[
{
姓名:“约翰·罗伯茨”,
uid:'49ikds_DM3IDMSMMI9SZ',
},
{
姓名:“彼得·琼斯”,
uid:'fmi33_sm39imsz9z9nb',
}
];
常数车=[
{
制造商:“宝马”,
型号:“320d”,
年份:“2010年”,
用户:null,
},
{
制造商:“宝马”,
型号:530d,
年份:“2018年”,
用户:null,
},
{
制造商:“奥迪”,
型号:“RS6”,
年份:“2014年”,
用户:null,
},
];
对于(设i=0;i控制台.日志(汽车)您可以使用
%
始终具有正确的标识并重用用户

const用户=[
{
姓名:“约翰·罗伯茨”,
uid:'49ikds_DM3IDMSMMI9SZ',
},
{
姓名:“彼得·琼斯”,
uid:'fmi33_sm39imsz9z9nb',
}
];
常数车=[
{
制造商:“宝马”,
型号:“320d”,
年份:“2010年”,
用户:null,
},
{
制造商:“宝马”,
型号:530d,
年份:“2018年”,
用户:null,
},
{
制造商:“奥迪”,
型号:“RS6”,
年份:“2014年”,
用户:null,
},
];
对于(设i=0;i选项1:

for(let i = 0; i < cars.length; i++){
   cars[i].user = users[i % users.length].uid;
}
for(设i=0;i
备选案文2:

for(let i = 0; i < cars.length; i++){
   cars[i].user = users[Math.round(Math.random() * (users.length - 1))].uid;
}
for(设i=0;i
选项1:

for(let i = 0; i < cars.length; i++){
   cars[i].user = users[i % users.length].uid;
}
for(设i=0;i
备选案文2:

for(let i = 0; i < cars.length; i++){
   cars[i].user = users[Math.round(Math.random() * (users.length - 1))].uid;
}
for(设i=0;i
这很简单。只要写下下面的逻辑

$.grep(users, function(user, i ) {  cars[i].user = user.uid;});

这很简单。只要写下下面的逻辑

$.grep(users, function(user, i ) {  cars[i].user = user.uid;});
var用户=[
{
姓名:“约翰·罗伯茨”,
uid:“49ikds_DM3IDMSMMI9SZ”
},
{
姓名:“彼得·琼斯”,
uid:“fmi33_sm39imsz9z9nb”
}
]
//实际阵列长度为424
var cars=[
{
制造商:“宝马”,
型号:“320d”,
年份:“2010年”,
用户:空
},
{
制造商:“宝马”,
型号:“530d”,
年份:“2018年”,
用户:空
},
{
制造商:“奥迪”,
型号:“RS6”,
年份:“2014年”,
用户:空
}
]
汽车。地图(功能(汽车){
var randomIndex=Math.floor(Math.random()*Math.floor(users.length))
car.user=users[randomIndex].uid;
})
控制台日志(汽车)
var用户=[
{
姓名:“约翰·罗伯茨”,
uid:“49ikds_DM3IDMSMMI9SZ”
},
{
姓名:“彼得·琼斯”,
uid:“fmi33_sm39imsz9z9nb”
}
]
//实际阵列长度为424
var cars=[
{
制造商:“宝马”,
型号:“320d”,
年份:“2010年”,
用户:空
},
{
制造商:“宝马”,
型号:“530d”,
年:“2018”,
用户:空
},
{
制造商:“奥迪”,
型号:“RS6”,
年份:“2014年”,
用户:空
}
]
汽车。地图(功能(汽车){
var randomIndex=Math.floor(Math.random()*Math.floor(users.length))
car.user=users[randomIndex].uid;
})

console.log(cars)
感谢您回复Arthur,我的问题在于我需要为cars数组分配一个用户,它不能是空值。我需要有人再次在我的用户阵列上循环,同时像往常一样继续通过我的cars循环。@juicy89我更新了一个使用模块(divide的其余部分)。在您的情况下,我们有3辆车和2个用户:0和0,1和1,2和2。。但用户2不存在,2%2(索引%user length)=0。。因此,汽车2是链接到用户0的,这很好。谢谢你,亚瑟!从来没有想过要用modulesthanks来回复亚瑟,我的问题在于我需要一个用户被分配给cars数组,它不能是空值。我需要有人再次在我的用户阵列上循环,同时像往常一样继续通过我的cars循环。@juicy89我更新了一个使用模块(divide的其余部分)。在您的情况下,我们有3辆车和2个用户:0和0,1和1,2和2。。但用户2不存在,2%2(索引%user length)=0。。因此,汽车2是链接到用户0的,这很好。谢谢你,亚瑟!从未想过使用模数