比较两个对象并替换公共对象属性

问题描述

我有以下两个数组,我想找到对象之间的通用属性,并将属性从对象1替换为对象2

Object 1: noAssignmentArray
[{
  AWART: "awart",LGART: "lgart",LTXA1: "ltxa1"
}]

Object 2: 
[{
  AllowEdit: ""
  AllowRelease: "X"
  ApproverId: "00000000" 
  TimeEntrydatafields:{
    ALLDF: ""
    APNAM: ""
    ARBID: "10004821"
    ARBPL: ""
    AUERU: ""
    AWART: "state",LGART: "material",LTXA1: "value"
  }
}]

对象2的预期结果

[{
  AllowEdit: ""
  AllowRelease: "X"
  ApproverId: "00000000" 
  TimeEntrydatafields:{
    ALLDF: ""
    APNAM: ""
    ARBID: "10004821"
    ARBPL: ""
    AUERU: ""
    **AWART: "awart",LTXA1: "ltxa1"
  }
}]

解决方法

您可以使用ES6传播运算符合并obj2数组的第一个元素

Obj2[0] = {...Obj2[0],...Obj1[0]}

常规语法是

{...X,...Y} // ES6
Object.assign({},X,Y) // Before ES6
,

也许这对您有帮助,假设您确实有一个数组,其中的元素恰好包含实际的有效载荷:

const assignment = assignmentArray[0];
const newDataFields = noAssignmentArray[0];
Object.assign(assignment.TimeEntryDataFields,newDataFields);

这利用了Object.assign函数,该函数只是将所有属性从第二个参数对象复制到第一个参数对象,而无需检查这是否会导致任何更改。