簡體   English   中英

合並javascript對象數組

[英]Merge array of javascript objects

這是 javascript 對象的數組。 我希望這些 javascript 對象根據它們的相同屬性值合並為一個 javascript 對象。

這是原始數組:

const array = [
 {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Education: {…}},
 {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Skills: {…}},
 {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Total: {…}},
 {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Personal: {…}},
 {email: 'tayyab@endtest-mail.io', name: 'Tayyab', role: 'Lead', Ethics: {…}},
 {email: 'tayyab@endtest-mail.io', name: 'Tayyab', role: 'Lead', Total: {…}},
 {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Total: {…}},
 {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Skills: {…}},
 {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Personal: {…}},
 {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Education: {…}},
]

這是所需的數組:

const array = [
 {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Education: {…}, Skills: {…}, Total: {…}, Personal: {…}},
 {email: 'tayyab@endtest-mail.io', name: 'Tayyab', role: 'Lead', Ethics: {…}, Total: {…}},
 {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Total: {…}, Skills: {…}, Personal: {…}, Education: {…}},
]

與電子郵件、姓名和角色一樣,這三者都具有相同的屬性和屬性值。 它將合並到一個 javascript 對象中,而其他對象保持不變。 請在React.js/Javascript中提供解決方案。 謝謝

一個應用 reduce 方法的好案例,試試這個代碼:

 const array = [ {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Education: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Skills: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Total: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Personal: {}}, {email: 'tayyab@endtest-mail.io', name: 'Tayyab', role: 'Lead', Ethics: {}}, {email: 'tayyab@endtest-mail.io', name: 'Tayyab', role: 'Lead', Total: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Total: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Skills: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Personal: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Education: {}}, ] let result = Object.values(array.reduce((acc, {name, ...rest}) => { acc[name] = {...acc[name], ...{name, ...rest}}; return acc; }, {})); console.log(result);

使用 reduce 和 Object.values

 const array = [ {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Education: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Skills: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Total: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Personal: {}}, {email: 'tayyab.ejaz@endtest-mail.io', name: 'Tayyab', role: 'Lead', Ethics: {}}, {email: 'tayyab.ejaz@endtest-mail.io', name: 'Tayyab', role: 'Lead', Total: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Total: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Skills: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Personal: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Education: {}}, ] const result = Object.values(array.reduce((acc, item) => { // build key with unique props const key = [item.email, item.name, item.role].join("-"); // assign properties to a new object // if object does not exist with the key it uses empty object acc[key] = {...(acc[key] || {}), ...item}; return acc; }, {})); console.log(result);

暫無
暫無

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

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