簡體   English   中英

將對象數組中兩個屬性的唯一值存儲到單個數組中

[英]Store the unique values of two properties from array of objects into single array

如何獲取requesterPractitionerId和performerOrganizationId的唯一值。 我需要在一個數組中使用requesterPractitionerId和performerOrganizationId的唯一值。

[ 
    { 
        id: '1043120',
        requesterPractitionerId: '1043119',
    },
    { 
        id: '1043081',
        requesterPractitionerId: '1043080'
    },
    { 
        id: 'e1dceebe-c5ba-46a5-a63a-bff709896af4',
        requesterPractitionerId: 'e0a844e4-6c8a-489a-8bd6-1d62267d311e',
        performerOrganizationId: '05D0889009',
    },
    { 
        id: '2709842f-41e3-4193-8607-fc34d3d24ec1',
        requesterPractitionerId: 'e0a844e4-6c8a-489a-8bd6-1d62267d311e',
        performerOrganizationId: '05D0889009'
    } 
]

預期產出:

1043119
1043080
e0a844e4-6c8a-489a-8bd6-1d62267d311e
05D0889009

我是Javascript的新手,並在幾個小時內苦苦掙扎。 任何幫助都會得到很好的回應。

使用SetArray.reduceArray.from

  • 使用reduce創建具有所述字段的唯一值的集合
  • 然后使用Array.from將集轉換為數組

 let arr = [{id:'1043120',requesterPractitionerId:'1043119'},{id:'1043081',requesterPractitionerId:'1043080'},{id:'e1dceebe-c5ba-46a5-a63a-bff709896af4',requesterPractitionerId:'e0a844e4-6c8a-489a-8bd6-1d62267d311e',performerOrganizationId:'05D0889009'},{id:'2709842f-41e3-4193-8607-fc34d3d24ec1',requesterPractitionerId:'e0a844e4-6c8a-489a-8bd6-1d62267d311e',performerOrganizationId:'05D0889009'}]; let result = Array.from(arr.reduce((a,c) => { if(c.requesterPractitionerId) a.add(c.requesterPractitionerId); if(c.performerOrganizationId) a.add(c.performerOrganizationId); return a; }, new Set())); console.log(result); 

一種解決方案是使用Array.reduce()從您需要的屬性生成新的Set 之后,您可以將集合的項目spread到數組中。

 const input = [{id:'1043120',requesterPractitionerId:'1043119'},{id:'1043081',requesterPractitionerId:'1043080'},{id:'e1dceebe-c5ba-46a5-a63a-bff709896af4',requesterPractitionerId:'e0a844e4-6c8a-489a-8bd6-1d62267d311e',performerOrganizationId:'05D0889009',},{id:'2709842f-41e3-4193-8607-fc34d3d24ec1',requesterPractitionerId:'e0a844e4-6c8a-489a-8bd6-1d62267d311e',performerOrganizationId:'05D0889009'}]; let res = input.reduce((acc, o) => { if (o.hasOwnProperty("requesterPractitionerId")) acc.add(o.requesterPractitionerId); if (o.hasOwnProperty("performerOrganizationId")) acc.add(o.performerOrganizationId); return acc; }, new Set()) console.log([...res]); 
 .as-console {background-color:black !important; color:lime;} .as-console-wrapper {max-height:100% !important; top:0;} 

您可以使用forEach迭代data ,然后使用Set刪除重復項

 let data = [{ id: '1043120', requesterPractitionerId: '1043119', }, { id: '1043081', requesterPractitionerId: '1043080' }, { id: 'e1dceebe-c5ba-46a5-a63a-bff709896af4', requesterPractitionerId: 'e0a844e4-6c8a-489a-8bd6-1d62267d311e', performerOrganizationId: '05D0889009', }, { id: '2709842f-41e3-4193-8607-fc34d3d24ec1', requesterPractitionerId: 'e0a844e4-6c8a-489a-8bd6-1d62267d311e', performerOrganizationId: '05D0889009' } ] let newArry = []; data.forEach(function(item) { newArry.push(item.requesterPractitionerId); if (item.hasOwnProperty('performerOrganizationId')) { newArry.push(item.performerOrganizationId) } }) let k = Array.from(new Set(newArry)); console.log(k) 

真的很簡單 - Setmapreducefilter

 const arr = [{id:'1043120',requesterPractitionerId:'1043119',},{id:'1043081',requesterPractitionerId:'1043080'},{id:'e1dceebe-c5ba-46a5-a63a-bff709896af4',requesterPractitionerId:'e0a844e4-6c8a-489a-8bd6-1d62267d311e',performerOrganizationId:'05D0889009',},{id:'2709842f-41e3-4193-8607-fc34d3d24ec1',requesterPractitionerId:'e0a844e4-6c8a-489a-8bd6-1d62267d311e',performerOrganizationId:'05D0889009'}]; const res = [...new Set(arr.map(({ requesterPractitionerId, performerOrganizationId }) => [requesterPractitionerId, performerOrganizationId]).reduce((acc, curr) => acc.concat(curr)).filter(Boolean))]; console.log(res); 
 .as-console-wrapper { max-height: 100% !important; top: auto; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM