巧妙解決JavaScript數(shù)組對(duì)象中重復(fù)id問(wèn)題
本文提供一種高效的JavaScript方法,用于處理數(shù)組對(duì)象中重復(fù)的ID,并為具有相同ID的對(duì)象賦予不同的值。
假設(shè)我們有一個(gè)包含重復(fù)ID的數(shù)組對(duì)象:
const list = [ { id: 1, name: '小明' }, { id: 1, name: '小紅' }, { id: 2, name: '小強(qiáng)' }, { id: 3, name: '小張' }, { id: 4, name: '小蘭' }, { id: 1, name: '小青' }, { id: 4, name: '小青' } ];
我們的目標(biāo)是為每個(gè)重復(fù)ID的對(duì)象添加一個(gè)value屬性,并賦予其不同的布爾值(true或false)。最終結(jié)果應(yīng)如下所示:
const list = [ { id: 1, name: '小明', value: true }, { id: 1, name: '小紅', value: false }, { id: 2, name: '小強(qiáng)' }, { id: 3, name: '小張' }, { id: 4, name: '小蘭', value: true }, { id: 1, name: '小青', value: true }, { id: 4, name: '小青', value: false } ];
為了實(shí)現(xiàn)這個(gè)目標(biāo),我們可以使用一個(gè)對(duì)象來(lái)跟蹤ID的出現(xiàn)次數(shù),并使用另一個(gè)對(duì)象記錄每個(gè)ID已經(jīng)賦予的值。
立即學(xué)習(xí)“Java免費(fèi)學(xué)習(xí)筆記(深入)”;
以下是實(shí)現(xiàn)代碼:
const list = [ { id: 1, name: '小明' }, { id: 1, name: '小紅' }, { id: 2, name: '小強(qiáng)' }, { id: 3, name: '小張' }, { id: 4, name: '小蘭' }, { id: 1, name: '小青' }, { id: 4, name: '小青' } ]; const idCounts = {}; const idValues = {}; list.forEach(item => { idCounts[item.id] = (idCounts[item.id] || 0) + 1; }); list.forEach(item => { if (idCounts[item.id] > 1) { if (!idValues[item.id]) { idValues[item.id] = true; } item.value = idValues[item.id]; idValues[item.id] = !idValues[item.id]; } }); console.log(list);
這段代碼首先統(tǒng)計(jì)每個(gè)ID出現(xiàn)的次數(shù),然后遍歷數(shù)組,為重復(fù)ID的對(duì)象添加value屬性,并交替賦予true和false值。 idValues 對(duì)象保證了同一個(gè)ID的后續(xù)對(duì)象會(huì)得到不同的布爾值。 這種方法簡(jiǎn)潔高效,易于理解和維護(hù)。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END