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

上一篇:javascript – 下划线或条件(下划线,lodash或任何其他解决方案)


下一篇:javascript – Lodash中的partialRight似乎什么都不做