javascript - 如何使用Javascript循环和连接第二个数组列表(如果存在)

标签 javascript

 transaction =[
          {
            "details": [
              {
                "type": "1",

              },
              {
                "type": "2",

              }
            ],
            "list": {
              "number": "30",

            }
          },
          {
            "details": [
              {
                "type": "3",

              },
              {
                "type": "4",

              }
            ],
            "list": {
              "number": "30",

            }
          }
        ]

循环组合2个数组后的预期输出:
{
  "details": [
    {
      "type": "1",

    },
    {
      "type": "2",

    },
    {
      "type": "3",

    },
    {
      "type": "4",

    }
  ]
}

有没有办法检查第二个数组是否存在,然后在循环中连接第二个数组。我尝试使用map循环和迭代,并在数组列表中连接任何建议,谢谢
map((activity:{ details: any; list: any; }) => { 
                const data = activity.details!.concat(activity
                    .filter((activity) => activity.details.includes(activity.details)));
                  console.log(data);
            })

最佳答案

您可以使用reduce()和spread运算符来创建组合的1D数组。通过使用details检查所有先前的类型是否不同,在将新的filter()数组添加到最终结果every()之前

const transaction =[
          {
            "details": [
              {
                "type": "1",

              },
              {
                "type": "2",

              }
            ],
            "list": {
              "number": "30",

            }
          },
          {
            "details": [
              {
                "type": "3",

              },
              {
                "type": "4",

              }
            ],
            "list": {
              "number": "30",

            }
          }
        ]
const res = transaction.reduce((ac, a) => 
              [...ac, ...a.details.filter(x => ac.every(n => n.type !== x.type))], []
            );
console.log(res)

关于javascript - 如何使用Javascript循环和连接第二个数组列表(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60569558/

相关文章:

javascript - 简单的 Javascript 循环无法按预期工作

javascript - 我想在页面加载时将默认文本加载到文本区域中

javascript - 如何按 z-index 对这些 Canvas 元素进行排序?

javascript - 不可见元素不接收鼠标事件

javascript - 如何检查日期选项的前 10 个字符是否相同

javascript - 在图像 slider 之前触摸手势

javascript - 如何在 Chrome 扩展程序中打开新选项卡 (Manifest v2)

javascript - 在 Angular 2 中使用 @Input Decorator 触发 ngOnChanges 生命周期钩子(Hook)

javascript - 使用 exec 查找多个匹配 JavaScript

javascript - Highcharts:具有多个系列的双轴线和柱形图