我想將一個物件隨機推送到一個陣列中,并讓每個物件都有自己的唯一 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,但我不知道如何制作它,以便它們都有自己的。有什么建議么?
uj5u.com熱心網友回復:
如果你想生成真正唯一的 id,你應該使用 uuid。
這是 npm 包。它相當容易設定和使用。
uj5u.com熱心網友回復:
簡單地呼叫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) });
}
uj5u.com熱心網友回復:
來自Lists 和 Keys的 React 檔案:
選擇鍵的最佳方法是使用一個字串,該字串在其兄弟項中唯一標識一個串列項。
所以鍵不需要是隨機的:它們只需要在兄弟姐妹中是唯一的。出于這個原因,使用普通整數作為固定鍵就可以了:
const count = Math.floor(Math.random() * 10);
const dataArray = [...new Array(count).keys()].map(key => ({...data, key}));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/495076.html
標籤:javascript 数组推送
