javascript - for循环中的UUIDV4不改变值
问题描述
我正在尝试创建一个函数来生成一个以 UUID 作为键的对象数组,以及一些嵌套对象 ID 的 UUID。
每个游戏都将基于我导入文件的模拟对象。
该函数需要一个将分配给一个键的运动(字符串)和一个将确定 for 循环迭代的数量(数字)。
当使用 for 循环时,嵌套对象 ID 的 UUID 在每次迭代时都会被覆盖。
const mockGame = require('../mock-game');
const uuidv4 = require('uuid/v4');
function generateMockGames(sport, quantity) {
let games = []
for (let i = 0; i < quantity; i++) {
let game = {}
let id = uuidv4()
game[id] = {
search: mockGame.search,
query: mockGame.query,
variables: mockGame.variables,
}
game[id].search.eventId = id
game[id].search.competition.categoryName = sport
game[id].search.id = id
game[id].search.competition.categoryName = sport;
games.push(game);
}
return games;
}
const mockFootballGame = generateMockGames('football', 3);
预期结果:
[
{
'286c1911-b155-4197-bbde-64dba0b304fe': {
search: {
eventId: '286c1911-b155-4197-bbde-64dba0b304fe',
name: 'test name',
competition: {
categoryName: 'football'
}
},
query: {
id: '286c1911-b155-4197-bbde-64dba0b304fe',
competition: {
categoryName: 'football'
}
},
variables: {
name: 'test name'
}
},
{
'082a46a6-4dde-433d-8011-9e94a5ee79ff': {
search: {
eventId: '082a46a6-4dde-433d-8011-9e94a5ee79ff',
name: 'test name',
competition: {
categoryName: 'football'
}
},
query: {
id: '082a46a6-4dde-433d-8011-9e94a5ee79ff',
competition: {
categoryName: 'football'
}
},
variables: {
name: 'test name'
}
},
{
'ba911751-3ea3-40ab-9bec-c525ab2a07b9': {
search: {
eventId: 'ba911751-3ea3-40ab-9bec-c525ab2a07b9',
name: 'test name',
competition: {
categoryName: 'football'
}
},
query: {
id: 'ba911751-3ea3-40ab-9bec-c525ab2a07b9',
competition: {
categoryName: 'football'
}
},
variables: {
name: 'test name'
}
}
]
输出是:
[
{
'286c1911-b155-4197-bbde-64dba0b304fe': {
search: {
eventId: 'ba911751-3ea3-40ab-9bec-c525ab2a07b9',
name: 'test name',
competition: {
categoryName: 'football'
}
},
query: {
id: 'ba911751-3ea3-40ab-9bec-c525ab2a07b9',
competition: {
categoryName: 'football'
}
},
variables: {
name: 'test name'
}
},
{
'082a46a6-4dde-433d-8011-9e94a5ee79ff': {
search: {
eventId: 'ba911751-3ea3-40ab-9bec-c525ab2a07b9',
name: 'test name',
competition: {
categoryName: 'football'
}
},
query: {
id: 'ba911751-3ea3-40ab-9bec-c525ab2a07b9',
competition: {
categoryName: 'football'
}
},
variables: {
name: 'test name'
}
},
{
'ba911751-3ea3-40ab-9bec-c525ab2a07b9': {
search: {
eventId: 'ba911751-3ea3-40ab-9bec-c525ab2a07b9',
name: 'test name',
competition: {
categoryName: 'football'
}
},
query: {
id: 'ba911751-3ea3-40ab-9bec-c525ab2a07b9',
competition: {
categoryName: 'football'
}
},
variables: {
name: 'test name'
}
}
]
解决方案
您正在将mockGame
循环中的子对象分配给条目,而不复制它们。因此,您在循环中使用新的 uuid 继续覆盖mockGame.query.id
等,然后将mockGame.query
对象作为一个整体分配给您的输出。
推荐阅读
- pine-script - 松树脚本中的 VWAP
- api - 使用 OAuth 2.0 使用可变令牌进行 API 调用
- c++ - 在运行时有条件地删除类成员或跳过调用该成员对象的构造函数
- python - Pandas DataFrame 根据多个条件分组添加新列值
- java - Spring核心:为@Bean方法使用接口结果类型
- python - 来自 HTMLParser 的 Python 可覆盖函数
- webpack - 强制纱线将某些模块安装到给定的工作区,而不是将它们移动到monorepo的共享节点模块?
- tensorflow - 大型数据集的多标签损失函数
- php - 路线 [删除博客] 未定义。(查看:C:\xampp\htdocs\laravel\resources\views\blogs\blog.blade.php)错误
- ios - 不可访问时,UserDefaults 是否返回默认值或 nil?