我想把一个对象推入数组中随机的次数,让每个对象都有它自己独特的id。目前,我可以将该对象随机地放入数组中,但我得到的是“列表中的每个子对象都应该有一个唯一的”键“支柱”。错误。当我console.log数组时,我确实看到每个对象都有相同的键。
我设置了一些代码来生成唯一的ID,但它似乎不起作用。
下面是我正在调用的数据对象:
let id = Math.random().toString(16).slice(2);
export const data = {
key: id,
asylumOffice: 'AyS',
citizenship: 'h',
raceOrEthnicity: 'other',
caseOutcome: 'pending',
completion: 'n',
currentDate: 'f',
};以及我调用它的代码,并生成一个随机数量:
let dataArray = [];
let randomNum = Math.floor(Math.random() * 10);
for (let i = 0; i < randomNum; i++) {
dataArray.push(data);
} 我知道for循环正在推送相同的数据实例,这就是为什么它们都有相同的id,但我不知道如何使它们各自都有自己的id。有什么建议吗?
发布于 2022-06-23 20:15:34
简单地在每次推送时调用Math.floor(Math.random() * 10)并使用扩展语法
// changed let to const cause it's not re-assigned
const dataArray = [];
for (let i = 0; i < randomNum; i++) {
// this copies the original data and overwrite key to a new randomly
// generated key
dataArray.push({ ...data, key: Math.floor(Math.random() * 10) });
}发布于 2022-06-23 20:25:32
如果您想要生成真正唯一的id,则应该使用uuid。
这是国家预防机制的一揽子计划。这是相当容易设置和使用。
发布于 2022-06-23 20:40:42
从列表和密钥的React
选择键的最佳方法是使用一个字符串,该字符串唯一地标识同级列表项。
所以密钥不需要是随机的:它们只需要在兄弟姐妹中是唯一的。因此,使用普通整数作为固定键是很好的:
const count = Math.floor(Math.random() * 10);
const dataArray = [...new Array(count).keys()].map(key => ({...data, key}));https://stackoverflow.com/questions/72735878
复制相似问题