Javascript 如何合并包含对象的两个数组

Javascript 如何合并包含对象的两个数组,javascript,arrays,merge,Javascript,Arrays,Merge,有一个数组A: let arrA = [{ name: 'twitter', active: true }, { name: 'medium', active: false }, { name: 'platinum', active: false } ]; 和阵列B: let arrB = [{ name: 'twitter', active: false

有一个数组A:

   let arrA = [{
      name: 'twitter',
      active: true
    }, {
      name: 'medium',
      active: false
    },
     {
      name: 'platinum',
      active: false
    }
  ];
和阵列B:

let arrB = [{
      name: 'twitter',
      active: false
    }, {
      name: 'medium',
      active: false
    }
  ];
我怎样才能得到这样一个数组:

let newArr = [{
      name: 'twitter',
      active: true
    }, {
      name: 'medium',
      active: false
    },
    {
      name: 'platinum',
      active: false
    }
  ];
我需要
newArr
中对象的
active
属性等于
arrA
arrB
中对象的
active
属性之间的
,其中
名称
相同

arrA
arrB
可以具有不同的长度

  • 创建一个空数组:
    var newArr=[]
  • 将对象推入
    newArr
    中,在
    arrA
    arrB
    之间比较对象键和值
  • 完成了
  • let arrA=[
    {
    名称:“推特”,
    主动:正确
    },
    {
    名称:'中等',
    活动:错误
    }
    ];
    设arrB=[
    {
    名称:“推特”,
    活动:错误
    },
    {
    名称:'中等',
    活动:错误
    }
    ];
    设newArr=[];
    对于(变量i=0;i
    
  • 创建一个空数组:
    var newArr=[]
  • 将对象推入
    newArr
    中,在
    arrA
    arrB
    之间比较对象键和值
  • 完成了
  • let arrA=[
    {
    名称:“推特”,
    主动:正确
    },
    {
    名称:'中等',
    活动:错误
    }
    ];
    设arrB=[
    {
    名称:“推特”,
    活动:错误
    },
    {
    名称:'中等',
    活动:错误
    }
    ];
    设newArr=[];
    对于(变量i=0;i控制台日志(newArr)这里有一个用于此目的的函数:

    function MyFunction(firstArray, secondArray) {
        firstArray = firstArray.map(e => {
            if (secondArray.some(_e => _e.name === e.name))
                e.active = e.active || secondArray.filter(f => f.name == e.name)[0].active;
                return e;
            });
    
            return [...newA, ...arrB.filter(e => !arrA.some(s => s.name === e.name))];
    }
    

    以下是用于此目的的函数:

    function MyFunction(firstArray, secondArray) {
        firstArray = firstArray.map(e => {
            if (secondArray.some(_e => _e.name === e.name))
                e.active = e.active || secondArray.filter(f => f.name == e.name)[0].active;
                return e;
            });
    
            return [...newA, ...arrB.filter(e => !arrA.some(s => s.name === e.name))];
    }
    

    这就是我的方法。使用地图

    const arrA = [{
        name: 'twitter',
        active: true
    }, {
        name: 'medium',
        active: false
    },{
        name: 'platinum',
        active: false
    }];
    
    const arrB = [{
        name: 'twitter',
        active: false
    }, {
        name: 'medium',
        active: false
    }];
    
      const allItems = arrA.concat(arrB);
      const mergedItems = new Map();
      allItems.forEach((value) => {
        if (!mergedItems.get(value.name)) {
          mergedItems.set(value.name, value);
        } else {
          value.active = value.active || mergedItems.get(value.name).active;
          mergedItems.set(value.name, value);
        }
      });
      const mergedArray =  Array.from(mergedItems.values()) ;
    

    希望有帮助

    这就是我的方法。使用地图

    const arrA = [{
        name: 'twitter',
        active: true
    }, {
        name: 'medium',
        active: false
    },{
        name: 'platinum',
        active: false
    }];
    
    const arrB = [{
        name: 'twitter',
        active: false
    }, {
        name: 'medium',
        active: false
    }];
    
      const allItems = arrA.concat(arrB);
      const mergedItems = new Map();
      allItems.forEach((value) => {
        if (!mergedItems.get(value.name)) {
          mergedItems.set(value.name, value);
        } else {
          value.active = value.active || mergedItems.get(value.name).active;
          mergedItems.set(value.name, value);
        }
      });
      const mergedArray =  Array.from(mergedItems.values()) ;
    

    希望有帮助

    @MuratK的可能副本。我需要合并一个对象数组而不是字符串数组。如果你能给我提供另一个相关的答案,我将结束这个问题,将标记更改为JavaScript,因为这个问题中没有任何特定于TypeScript的内容@MuratK可能是重复的。我需要合并一个对象数组而不是字符串数组。如果你能给我提供另一个相关的答案,我将结束这个问题。将标记更改为JavaScript,因为在这个问题中没有任何特定于TypeScript的内容