将一个数组中具有相同 id 的所有对象添加到另一个数组中具有相同 id 的对象的数组中

网易

我有 2 个数组。我需要将arraySecondary 中具有相同id 的所有对象移动到arrayPrimary 中具有相同id 的对象内的数组中。

例子:

    const arrayPrimary = [
      { "id": "1", "location": "France", "price": "12,3" },
      { "id": "2", "location": "Germany", "price": "12,0" },
      { "id": "3", "location": "USA", "price": "10" },
      { "id": "4", "location": "Italy", "price": "16" },
    ];

    const arraySecondary = [
      { "id": "1", "name": "phil", "location": "New York", "price": "1,3", "dd": "lql" },
      { "id": "2", "location": "Paris", "dd": "lql" },
      { "id": "3", "location": "Egypt" },
      { "id": "2", "name": "joe", "location": "London" },
      { "id": "1", "location": "location", "name": "april" },
      { "id": "2", "name": "mei", "location": "Barcelona" },
    ];

预期结果:

    [
      {
        id: 1,
        location: "France",
        price: "12,3",
        area: [
          { id: 1, location: "location", name: "april" },
          { id: 1, name: "phil", location: "New York", price: "1,3", dd: "lql" },
        ],
      },
      {
        id: 2,
        location: "Germany",
        price: "12,0",
        area: [
          { id: 2, location: "Paris", dd: "lql" },
          { id: 2, name: "joe", location: "London" },
          { id: 2, name: "mei", location: "Barcelona" },
        ],
      },
      { id: 3, location: "USA", price: 10, area: [{ id: 3, location: "Egypt" }] },
      { id: 4, location: "Italy", price: 16 },
    ];
    //or json

首先,我向 arrayPrimary 中的每个对象添加一个空数组。

 arrayPrimary.map((v) => ({ ...v, area: [] }));

之后,我通过 id 过滤 arraySecondary,并将所有结果推送到 arrayPrimary 中每个对象的区域数组中。但在这里我卡住了。

    console.log(
      arrayPrimary.forEach((main) =>
        main.area.push(arraySecondary.filter((items) => items.id === main.id))
      )
    );

第二个想法是首先按 id 对 arraySecondary 中的每个对象进行排序,然后将其推送到 arrayPrimary 中的空白区域数组中

let op = arrayItems.reduce((op,inp) => {
  op[inp.id] = op[inp.id] || []
  op[inp.id].push(inp)
  return op
},{})

console.log(op)

这就是我坚持这两种想法的地方。

R4ncid

像这样的东西?

const arrayPrimary = [
      { "id": "1", "location": "France", "price": "12,3" },
      { "id": "2", "location": "Germany", "price": "12,0" },
      { "id": "3", "location": "USA", "price": "10" },
      { "id": "4", "location": "Italy", "price": "16" },
    ];

    const arraySecondary = [
      { "id": "1", "name": "phil", "location": "New York", "price": "1,3", "dd": "lql" },
      { "id": "2", "location": "Paris", "dd": "lql" },
      { "id": "3", "location": "Egypt" },
      { "id": "2", "name": "joe", "location": "London" },
      { "id": "1", "location": "location", "name": "april" },
      { "id": "2", "name": "mei", "location": "Barcelona" },
    ];
    
const composed = arrayPrimary.map(d => {
  return {
    ...d,
    area: arraySecondary.filter(({id}) => d.id === id)
  }
})

console.log(composed)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过合并具有相同ID的集合中的两个对象来创建一个新对象,并将结果对象添加到另一个集合中

mongodb / mongoose addToSet将具有相同ID的对象添加到数组

如何访问另一个数组中的对象数组中的ID或名称?

在Java脚本中获取第一个数组中具有id的对象与其他数组中的id相同的对象

检查另一个数组中的数组是否具有相同的元素

通过ID将对象以原子方式从一个数组移动到同一文档中的另一个数组

如何从另一个数组中获得具有批准ID的商品?map()filter()还是?

有两个对象的数组,在这些数组中,如果ID相同,我想匹配ID。我需要具有相同ID的合并信息的新数组

如何通过ID号在数组中找到对象,该ID在Vue中该对象的另一个数组中

合并数组中具有相同ID的对象

我如何从具有特定ID的数组中获取对象与另一个数组编号进行比较

如果在javascript中具有相同ID,如何合并数组中所有属性的两个对象?

更新文档并创建一个字段,该字段是集合MongoDB中具有相同ID的所有对象的数组

如何查找另一个数组中不可用的ID的对象

一个对象包含两个数组。如何匹配所有数组的ID?

如何在仅具有“子”数组的一个已标识属性的数组中查找对象的ID

如何基于另一个对象ID数组过滤具有MongoDB对象ID的对象数组?

从表中选择所有行,除了具有相同 id 的另一个表中的行在另一列中具有特定值

将数组中的值添加到php中具有相同ID的另一个数组

我想通过另一个数组中的 id 过滤掉一组对象

Javascript将一个元素添加到另一个没有id的元素中

如果我的数组在 React 中具有相同的 id,我如何创建一个新数组

如何通过在 expo/react-native 中的 JavaScript 中找到与另一个数组中的 id 相似的 id 来更改数组中的对象?

是否可以从另一个对象数组的 ID 中找到对象数组中的值?

当这些 id 位于 JavaScript 中的另一个数组中时,如何根据它们的 id 删除对象

使用数组方法根据具有相同 id 的另一个数组元素的存在来设置数组元素对象属性

使用不具有相同列名的另一个单独数据帧中的一个数据帧中的 id 获取数据并将字符串附加到一个值

我有两个数组,第一个数组中的值与第二个数组的 ID 字段中的值相同

在js的数组中合并具有相同id的对象