首页 > 解决方案 > 通过键匹配两个对象,并从一个对象返回一个具有键和值的新对象

问题描述

我有两个对象:

对象 1

{
  Manufacturer: 'Manufacturer Name',
  User_Name: 'HCP First Name',
  HCP_Middle_Name: 'HCP Middle Name',
  HCP_Last_Name: 'HCP Last Name',
  HCP_NPI: 'HCP NPI',
  HCP_Credentials: 'HCP Credentials',
  HCP_State_License_Number: 'HCP State License Number',
  HCP_State_of_Licensure: 'HCP State of Licensure',
  HCP_Specialty: 'HCP Specialty',
  Teaching_Hospital_Name: 'Teaching Hospital Name',
  Teaching_Hospital_Tax_ID: 'Teaching Hospital Tax ID',
  Address_1: 'Address 1',
  Address_2: 'Address 2',
  City: 'City',
  State: 'State',
  Province: 'Province',
  Postal_Code: 'Postal Code',
  Country: 'Country',
  Spend_Date: 'Spend Date',
  Spend_Currency: 'Spend Currency',
  Spend_Amount: 'Spend Amount',
  Form_of_Payment: 'Form of Payment',
  Nature_of_Payment: 'Nature of Payment',
  Home_System_Identifier: 'Home System Identifier',
  Product_Name: 'Product Name',
  Travel_City: 'Travel City',
  Travel_State: 'Travel State',
  Travel_Country: 'Travel Country'
}

对象 2

[
  {
    Manufacturer: 'Ascendis',
    User_Name: '',
    HCP_Middle_Name: '',
    HCP_Last_Name: '',
    HCP_NPI: '',
    HCP_Credentials: '',
    HCP_State_License_Number: '',
    HCP_State_of_Licensure: '',
    HCP_Specialty: '',
    Teaching_Hospital_Name: '',
    Teaching_Hospital_Tax_ID: '',
    Address_1: '',
    Address_2: '',
    City: '',
    State: '',
    Province: '',
    Postal_Code: '',
    Country: '',
    Spend_Date: '',
    Spend_Currency: '',
    Spend_Amount: '',
    Form_of_Payment: '',
    Nature_of_Payment: '',
    Home_System_Identifier: '',
    Product_Name: '',
    Travel_City: '',
    Travel_State: '',
    Travel_Country: ''
  },
  {
    Manufacturer: 'Amneal',
    User_Name: '',
    HCP_Middle_Name: '',
    HCP_Last_Name: '',
    HCP_NPI: '',
    HCP_Credentials: '',
    HCP_State_License_Number: '',
    HCP_State_of_Licensure: '',
    HCP_Specialty: '',
    Teaching_Hospital_Name: '',
    Teaching_Hospital_Tax_ID: '',
    Address_1: '',
    Address_2: '',
    City: '',
    State: '',
    Province: '',
    Postal_Code: '',
    Country: '',
    Spend_Date: '',
    Spend_Currency: '',
    Spend_Amount: '',
    Form_of_Payment: '',
    Nature_of_Payment: '',
    Home_System_Identifier: '',
    Product_Name: '',
    Travel_City: '',
    Travel_State: '',
    Travel_Country: ''
  }
]

我在这里尝试完成的是通过将Object 1中的键和值与Object 2中的键进行比较来返回一个新的对象数组。例如,在Object 1中,键“Manufacturer”的值为“Manufacturer Name”,所以我需要检查对象 2是否存在键“Manufacturer”,如果存在,我需要替换键“Manufacturer”在对象 2中,其值在对象 1(制造商名称)中。

请原谅对象 2 中的大多数空值,因为这些是空白用于测试目的,但是,用户需要在 prod.xml 中填充这些值。

标签: javascriptnode.js

解决方案


Object.keys(obj1).forEach(key1 => {if (Object.keys(obj2).includes(key1)) { obj2[obj1[key1]] = obj2[key1]; delete obj2[key1]; }}) 

推荐阅读