Javascript 如何基于键匹配值将两个对象数组合并为一个数组

Javascript 如何基于键匹配值将两个对象数组合并为一个数组,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我的第一个数组名为feeds: [ { _id: '5b8906e81248270685399a9a', name: 'fin24', state: 'OK', status: true, }, { _id: '5b8907031248270685399a9b', name: 'news24', state: 'OK', status: true, } ] 我的第二个数组

我的第一个数组名为feeds:

[
   {
      _id: '5b8906e81248270685399a9a',
      name: 'fin24',
      state: 'OK',
      status: true,
    },
   { 
      _id: '5b8907031248270685399a9b',
      name: 'news24',
      state: 'OK',
      status: true,
  } 
]
我的第二个数组名为FeedArticleScont:

feedArticlesCount: [ 
  { _id: 5b8907031248270685399a9b,
    pending: 21,
    approved: 1,
    active: 21,
    inactive: 1 },
  { _id: 5b8906e81248270685399a9a,
    pending: 20,
    approved: 0,
    active: 20,
    inactive: 0 },
  { _id: 5b8664c26d90b107d0952cbe,
    pending: 62,
    approved: 8,
    active: 0,
    inactive: 70 },
  { _id: 5b865bf28152610775987d67,
    pending: 111,
    approved: 30,
    active: 0,
    inactive: 141 } 
]
我想根据匹配的_id值将这两个数组合并为一个,如果第一个数组中不存在_id,我想跳过它

我的预期产出:

[
   {
      _id: '5b8906e81248270685399a9a',
      name: 'fin24',
      state: 'OK',
      status: true,
      pending: 20,
      approved: 0,
      active: 20,
      inactive: 0 
    },
   { 
      _id: '5b8907031248270685399a9b',
      name: 'news24',
      state: 'OK',
      status: true,
      pending: 21,
      approved: 1,
      active: 21,
      inactive: 1 
  } 
]
我尝试了forEach和reduce方法,但它不能正常工作

在这里,我尝试:

let result = [];
feeds.forEach((itm, i) => {
  result.push(Object.assign({}, itm, feedArticlesCount[i]));
});

console.log(result);
这正在工作,但我的名称密钥存储在错误的_id位置。

因为第二个数组包含第一个数组中不存在的项,所以您可以使用第一个数组来
.map
,然后
在第二个数组中查找匹配的对象:

const arr=[{u id:'5b8906e81248270685399a9a',名称:'fin24',状态:'OK',状态:!0,},{u id:'5b8907031248270685399a9b',名称:'news24',状态:'OK',状态:!0,}];
const-feedarticlescont=[{u-id:'5b8907031248270685399a9b',待定:21,已批准:1,活动:21,非活动:1},{u-id:'5B8906E8124827685399A9A',待定:20,已批准:0,活动:20,非活动:0},{u-id:'5b8664c26d90b107d0952cbe待定:62,已批准:8,活动:0,非活动:70},{u-id:'5B865BF285261052777877',待定:111,已批准:D630非活动:141}]
console.log(arr.map(
({u id,…rest})=>({u id,…rest,…FeedArticleScont.find((项目)=>项目。{u id====\u id)})
));
因为第二个数组包含第一个数组中不存在的项,所以您可以用第一个数组映射
,然后在第二个数组中查找匹配的对象:

const arr=[{u id:'5b8906e81248270685399a9a',名称:'fin24',状态:'OK',状态:!0,},{u id:'5b8907031248270685399a9b',名称:'news24',状态:'OK',状态:!0,}];
const-feedarticlescont=[{u-id:'5b8907031248270685399a9b',待定:21,已批准:1,活动:21,非活动:1},{u-id:'5B8906E8124827685399A9A',待定:20,已批准:0,活动:20,非活动:0},{u-id:'5b8664c26d90b107d0952cbe待定:62,已批准:8,活动:0,非活动:70},{u-id:'5B865BF285261052777877',待定:111,已批准:D630非活动:141}]
console.log(arr.map(
({u id,…rest})=>({u id,…rest,…FeedArticleScont.find((项目)=>项目。{u id====\u id)})

));按id在错误的位置,您的意思是不在第一位吗?我看不出有什么问题that@jonatjano检查此名称是否在错误位置按id在错误位置您的意思是不在第一位吗?我看不出有什么问题that@jonatjano检查此名称是否出现在错误的位置