簡體   English   中英

如何比較兩個對象並更改鍵名?

[英]How to compare two objects and change the key name?

比較 headerObj(field_key) 和 dataObj(key) 並用來自 headerObj 的 label 形成結果

 const headerObject = [{ label: 'Code', field_key: 'code' }, { label: 'Worked Accounts', field_key: 'workedAccounts' }, { label: 'Contactable Accounts', field_key: 'contactableAccounts' }, { label: 'Taken By', field_key: 'takenBy' }, ]; const dataObj = [{ "code": "ABCD", "takenBy": "", "workedAccounts": 4, "contactableAccounts": 3, }, { "takenBy": "Ram", "workedAccounts": 2, "contactableAccounts": 1, }, { "takenBy": "krish", "workedAccounts": 2, "contactableAccounts": 2, }, { "code": "XYZ", "takenBy": "", "workedAccounts": 9, "contactableAccounts": 4, }, { "Taken By": "Jack", "workedAccounts": 5, "contactableAccounts": 0, }, { "Taken By": "krish", "workedAccounts": 4, "contactableAccounts": 4, } ]; const result = [{ "Code": "ABCD", "Taken By": "", "Worked Accounts": 4, "Contactable Accounts": 3, }, { "Taken By": "Ram", "Worked Accounts": 2, "Contactable Accounts": 1, }, { "Taken By": "krish", "Worked Accounts": 2, "Contactable Accounts": 2, }, { "Code": "XYZ", "Taken By": "", "Worked Accounts": 9, "Contactable Accounts": 4, }, { "Taken By": "Jack", "Worked Accounts": 5, "Contactable Accounts": 0, }, { "Taken By": "krish", "Worked Accounts": 4, "Contactable Accounts": 4, } ]; result = filter(headerObj, el => Object.keys(dataObj)?.filter(ele => ele === el.field_key && {[el.field.key]: ele[field.key));

 const headerArray = [ { label: 'Code', field_key: 'code', }, { label: 'Worked Accounts', field_key: 'workedAccounts', }, { label: 'Contactable Accounts', field_key: 'contactableAccounts', }, { label: 'Taken By', field_key: 'takenBy', }, ]; // This is how your header array should be structured // in the first place const headerMap = headerArray.reduce((acc, { label, field_key }) => { acc[field_key] = label; return acc; }, {}); const dataArray = [ { code: 'ABCD', takenBy: '', workedAccounts: 4, contactableAccounts: 3, }, { takenBy: 'Ram', workedAccounts: 2, contactableAccounts: 1, }, { takenBy: 'krish', workedAccounts: 2, contactableAccounts: 2, }, { code: 'XYZ', takenBy: '', workedAccounts: 9, contactableAccounts: 4, }, { takenBy: 'Jack', workedAccounts: 5, contactableAccounts: 0, }, { takenBy: 'krish', workedAccounts: 4, contactableAccounts: 4, }, ]; const result = dataArray.map((obj) => { return Object.fromEntries(Object.keys(obj).map((key) => [headerMap[key], obj[key]])); }); console.log(result);

您的示例對象中有錯誤,但我認為這就是您所需要的:

const map = headerObject.reduce((acc, item) => ({...acc, [item.field_key]: item.label}), {});

dataObj.reduce((acc, item) => [
  ...acc,
  Object.keys(item).reduce((curr, key) => ({ ...curr, [map[key]]: item[key] }), {})
], []);

首先,您需要創建一個 map 以便輕松比較鍵和值,然后創建 map。 希望這可以幫助。

暫無
暫無

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

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