首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript如何在被推入数组的对象上创建唯一的id

Javascript如何在被推入数组的对象上创建唯一的id
EN

Stack Overflow用户
提问于 2022-06-23 19:50:35
回答 3查看 792关注 0票数 0

我想把一个对象推入数组中随机的次数,让每个对象都有它自己独特的id。目前,我可以将该对象随机地放入数组中,但我得到的是“列表中的每个子对象都应该有一个唯一的”键“支柱”。错误。当我console.log数组时,我确实看到每个对象都有相同的键。

我设置了一些代码来生成唯一的ID,但它似乎不起作用。

下面是我正在调用的数据对象:

代码语言:javascript
运行
复制
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',
  };

以及我调用它的代码,并生成一个随机数量:

代码语言:javascript
运行
复制
let dataArray = [];
let randomNum = Math.floor(Math.random() * 10);
for (let i = 0; i < randomNum; i++) {
  dataArray.push(data);
} 

我知道for循环正在推送相同的数据实例,这就是为什么它们都有相同的id,但我不知道如何使它们各自都有自己的id。有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-06-23 20:15:34

简单地在每次推送时调用Math.floor(Math.random() * 10)并使用扩展语法

代码语言:javascript
运行
复制
// 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) });
}
票数 0
EN

Stack Overflow用户

发布于 2022-06-23 20:25:32

如果您想要生成真正唯一的id,则应该使用uuid。

这是国家预防机制的一揽子计划。这是相当容易设置和使用。

票数 1
EN

Stack Overflow用户

发布于 2022-06-23 20:40:42

列表和密钥的React

选择键的最佳方法是使用一个字符串,该字符串唯一地标识同级列表项。

所以密钥不需要是随机的:它们只需要在兄弟姐妹中是唯一的。因此,使用普通整数作为固定键是很好的:

代码语言:javascript
运行
复制
const count = Math.floor(Math.random() * 10);

const dataArray = [...new Array(count).keys()].map(key => ({...data, key}));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72735878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档