比较两个数组并将对象添加到另一个数组

emi

我有两个数组:

let array1 = [
  {
    _id: '5eaf8eeac436dbc9b7d75f35',
    name: 'Strawberry',
    category: 'organic',
    image: '/productImages/australian.jpg',
    price: '9.65',
    quantity: 1
  },
  {
    _id: '5eaf8f61c436dbc9b7d75f36',
    name: 'Organic Wild Blue Berry',
    category: 'organic',
    image: '/productImages/owbb.jpg',
    price: '12.50',
    quantity: 1
  },
  {
    _id: '5eb0ac47d98c817d9a82df82',
    name: 'Mango',
    category: 'australian',
    image: '/productImages/australian.jpg',
    price: '12.25',
    quantity: 1
  },
  {
    _id: '5eb0ac71d98c817d9a82df83',
    name: 'Peas',
    category: 'conventional',
    image: '/productImages/owbb.jpg',
    price: '25.12',
    quantity: 1
  }
]

let array2 = [
  {
    _id: '5ec00539f7ff70566fd8a557',
    productid: {
      _id: '5eaf8eeac436dbc9b7d75f35',
      name: 'Strawberry',
      category: 'organic',
      image: '/productImages/australian.jpg',
      price: '9.65'
    },
    quantity: 3
  },
  {
    _id: '5ec00539f7ff70566fd8a558',
    productid: {
      _id: '5eaf8f61c436dbc9b7d75f36',
      name: 'Organic Wild Blue Berry',
      category: 'organic',
      image: '/productImages/owbb.jpg',
      price: '12.50'
    },
    quantity: 3
  }
]

我需要检查productIdarray2任何对象匹配_idarray1如果是这样,我需要将每个对象的数量彼此相加。否则,我需要互相推销。

例如,如果"_id": "5eb0ac71d98c817d9a82df83"在任何对象不存在array2productId,将其推入array2如果其中array2不存在任何元素,请将其array1推入array1

如果其中一个对象包含在另一个数组中,我设法更新了数量,但无法找出一种将其余对象彼此推到一起的方法。

这是我将匹配数量_id合并array1productId的方式array2

if (array1.length > 0) {
  for (let i = 0; i < array2.length; i++) {
    for (let k = 0; k < array1.length; k++) {
      if (array2[i].productid._id === array1[k]._id) {
        array1[k].quantity = array1[k].quantity + array2[i].quantity
        array2[i].quantity = array1[k].quantity
      }
    }
  }
}

根据以上示例的预期结果:

array1 = [
  {
    _id: '5eaf8eeac436dbc9b7d75f35',
    name: 'Strawberry',
    category: 'organic',
    image: '/productImages/australian.jpg',
    price: '9.65',
    quantity: 4
  },
  {
    _id: '5eaf8f61c436dbc9b7d75f36',
    name: 'Organic Wild Blue Berry',
    category: 'organic',
    image: '/productImages/owbb.jpg',
    price: '12.50',
    quantity: 4
  },
  {
    _id: '5eb0ac47d98c817d9a82df82',
    name: 'Mango',
    category: 'australian',
    image: '/productImages/australian.jpg',
    price: '12.25',
    quantity: 1
  },
  {
    _id: '5eb0ac71d98c817d9a82df83',
    name: 'Peas',
    category: 'conventional',
    image: '/productImages/owbb.jpg',
    price: '25.12',
    quantity: 1
  }
]

array2 = [
  {
    _id: '5ec00539f7ff70566fd8a557',
    productid: {
      _id: '5eaf8eeac436dbc9b7d75f35',
      name: 'Strawberry',
      category: 'organic',
      image: '/productImages/australian.jpg',
      price: '9.65'
    },
    quantity: 4
  },
  {
    _id: '5ec00539f7ff70566fd8a558',
    productid: {
      _id: '5eaf8f61c436dbc9b7d75f36',
      name: 'Organic Wild Blue Berry',
      category: 'organic',
      image: '/productImages/owbb.jpg',
      price: '12.50'
    },
    quantity: 4
  },
  {
    _id: 'auto-generated-id',
    productid: {
      _id: '5eb0ac47d98c817d9a82df82',
      name: 'Mango',
      category: 'australian',
      image: '/productImages/australian.jpg',
      price: '12.25'
    },
    quantity: 1
  },
  {
    _id: 'auto-generated-id',
    productid: {
      _id: '5eb0ac71d98c817d9a82df83',
      name: 'Peas',
      category: 'conventional',
      image: '/productImages/owbb.jpg',
      price: '25.12'
    },
    quantity: 1
  }
]

您可以通过reduce功能来做到这一点这是我的尝试:

var array1 =[{"_id":"5eaf8eeac436dbc9b7d75f35","name":"Strawberry","category":"organic","image":"/productImages/australian.jpg","price":"9.65","quantity":1},{"_id":"5eaf8f61c436dbc9b7d75f36","name":"Organic Wild Blue Berry","category":"organic","image":"/productImages/owbb.jpg","price":"12.50","quantity":1},{"_id":"5eb0ac47d98c817d9a82df82","name":"Mango","category":"australian","image":"/productImages/australian.jpg","price":"12.25","quantity":1},{"_id":"5eb0ac71d98c817d9a82df83","name":"Peas","category":"conventional","image":"/productImages/owbb.jpg","price":"25.12","quantity":1}];

var array2=[ { _id: '5ec00539f7ff70566fd8a557', productid: { _id: '5eaf8eeac436dbc9b7d75f35', name: 'Strawberry', category: 'organic', image: '/productImages/australian.jpg', price: '9.65', }, quantity: 3 }, { _id: '5ec00539f7ff70566fd8a558', productid: { _id: '5eaf8f61c436dbc9b7d75f36', name: 'Organic Wild Blue Berry', category: 'organic', image: '/productImages/owbb.jpg', price: '12.50', }, quantity: 3 }];


result = array1.reduce((acc, elem, i)=>{
    index = array2.findIndex(val=>val.productid._id == elem._id);
	if(index!=-1) {
	 array2[index].quantity = elem.quantity += array2[index].quantity;
	} else {
	  array2.push({_id:'some_id'+i, productid: elem, quantity: elem.quantity})
	}
    acc.push(elem);
	return acc;
},[]);

result = [...result, ...array2.filter(elem=> !array1.some(val=>val._id == elem.productid._id)).map(({productid, quantity})=>({...productid, quantity}))];


console.log(result);
console.log(array2)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较两个数组,然后再在JavaScript中将一个数组中的项添加到另一个数组中

来自分类Dev

根据条件将对象从一个数组添加到另一个数组

来自分类Dev

PHP foreach两个数组,在一个数组中找到一个值,在另一个数组中使用另一个字段(添加到数组)

来自分类Dev

将数组作为对象添加到另一个数组

来自分类Dev

将对象数组与另一个数组循环函数进行比较

来自分类Dev

如何使用useState将对象添加到位于另一个数组内部的数组中-React Native

来自分类Dev

有没有比for循环更好的方法将对象数组的属性添加到另一个数组?

来自分类Dev

MongoDB聚合:将每个数组值从另一个字段添加到数组内的每个对象。合并/合并来自不同字段的两个数组

来自分类Dev

React钩子从数组中删除项目并将其添加到另一个数组

来自分类Dev

如何比较两个numpy数组并通过调整向另一个数组添加缺失值

来自分类Dev

将对象从一个数组推到另一个数组

来自分类Dev

如何在javascript中将一个数组对象添加到另一个数组对象

来自分类Dev

如何将一个数组添加到另一个数组以创建一个数组数组。(JS)

来自分类Dev

如何将新数组添加到另一个数组的特定对象中

来自分类Dev

将匹配的对象添加到另一个数组时,从数组中删除它们

来自分类Dev

将匹配的对象添加到另一个数组时,从数组中删除它们

来自分类Dev

将字段值从一个数组添加到另一个数组(php)

来自分类Dev

将值从一个数组添加到另一个数组

来自分类Dev

如何在Javascript中将一个数组添加到另一个数组中?

来自分类Dev

如何将一个数组的元素添加到另一个数组

来自分类Dev

如何将一个数组中的值添加到另一个数组?

来自分类Dev

将一个数组的元素添加到另一个数组

来自分类Dev

是否可以将一个数组添加到另一个数组中

来自分类Dev

将一个数组列表添加到另一个

来自分类Dev

将值添加到另一个数组中的数组

来自分类Dev

将多维数组添加到另一个数组

来自分类Dev

如何将多维数组的键值添加到另一个数组

来自分类Dev

从另一个数组添加到多维数组

来自分类Dev

将数组添加到另一个数组

Related 相关文章

  1. 1

    比较两个数组,然后再在JavaScript中将一个数组中的项添加到另一个数组中

  2. 2

    根据条件将对象从一个数组添加到另一个数组

  3. 3

    PHP foreach两个数组,在一个数组中找到一个值,在另一个数组中使用另一个字段(添加到数组)

  4. 4

    将数组作为对象添加到另一个数组

  5. 5

    将对象数组与另一个数组循环函数进行比较

  6. 6

    如何使用useState将对象添加到位于另一个数组内部的数组中-React Native

  7. 7

    有没有比for循环更好的方法将对象数组的属性添加到另一个数组?

  8. 8

    MongoDB聚合:将每个数组值从另一个字段添加到数组内的每个对象。合并/合并来自不同字段的两个数组

  9. 9

    React钩子从数组中删除项目并将其添加到另一个数组

  10. 10

    如何比较两个numpy数组并通过调整向另一个数组添加缺失值

  11. 11

    将对象从一个数组推到另一个数组

  12. 12

    如何在javascript中将一个数组对象添加到另一个数组对象

  13. 13

    如何将一个数组添加到另一个数组以创建一个数组数组。(JS)

  14. 14

    如何将新数组添加到另一个数组的特定对象中

  15. 15

    将匹配的对象添加到另一个数组时,从数组中删除它们

  16. 16

    将匹配的对象添加到另一个数组时,从数组中删除它们

  17. 17

    将字段值从一个数组添加到另一个数组(php)

  18. 18

    将值从一个数组添加到另一个数组

  19. 19

    如何在Javascript中将一个数组添加到另一个数组中?

  20. 20

    如何将一个数组的元素添加到另一个数组

  21. 21

    如何将一个数组中的值添加到另一个数组?

  22. 22

    将一个数组的元素添加到另一个数组

  23. 23

    是否可以将一个数组添加到另一个数组中

  24. 24

    将一个数组列表添加到另一个

  25. 25

    将值添加到另一个数组中的数组

  26. 26

    将多维数组添加到另一个数组

  27. 27

    如何将多维数组的键值添加到另一个数组

  28. 28

    从另一个数组添加到多维数组

  29. 29

    将数组添加到另一个数组

热门标签

归档