javascript – 使用两个不同的数组创建一个分组数组

我有两个数组:

array1 = [{
   "type":"test",
   "name":"name1"},
 {
   "type":"dev",
    "name":"name2"}]

array2=[{
         "type":"test",
         "name":"name3"},
        {
         "type":"dev",
         "name":"name4"},
        {
         "type":"prod",
         "name":"name5"}]

我想用“type”对两个数组进行分组,并创建一个像这样的新数组:

finalArray=[{
             "type":"test",
             "info":[{
                      "type":"test",
                      "name":"name1"}],
                    [{
                      "type":"test",
                      "name":"name3"
                    }]},
             {
              "type":"dev",
              "info":[{
                       "type":"dev",
                       "name":"name2"}],
                     [{
                       "type":"dev",
                       "name":"name4"}]},
             {
              "type":"prod",
              "info":[],
                     [{
                       "type":"prod",
                        "name":"name5"}]
               }]

无论如何,我可以使用javascript,angularjs2,lodash,jquery实现这一点.我可以按照using lodash .groupBy. how to add your own keys for grouped output?中的提法分组和创建新对象

但唯一的事情总是我想从第二个数组推送“info”的index = 1中的数据,第一个数据推送到index = 0.如果任何数组没有“type”,那么“info”数组应该有空/ null值.

解决方法:

可以在javascript中实现您想要的结果,或者使用像lodash这样的帮助器.
你问题的最后一部分很难理解.如果数组没有“类型”,您将如何对它们进行分组.请提供更清晰的解释或修改您的预期输入和输出.

[更新]
谢谢你的解释.这是使用普通javascript的解决方案.

// get uniques type from two arrays
const uniqueTypes = new Set(array1
                          .concat(array2)
                          .map(x => x.type));

// loop the types, find item in both array
// group it
let result = Array.from(uniqueTypes).reduce((acc, curr) => {
    const item1 = array1.find(x => x.type === curr);
    const item2 = array2.find(x => x.type === curr);

    const info1 = item1 ? [item1] : [];
    const info2 = item2 ? [item2] : [];

    acc = acc.concat({ type: curr, info: [info1, info2] });

    return acc;
}, []);


console.log(result);

jsbin这里:https://jsbin.com/mobezogaso/edit?js,console

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...