按元素Javascript在另一个数组中推送数组

按元素Javascript在另一个数组中推送数组,javascript,arrays,arraylist,collections,Javascript,Arrays,Arraylist,Collections,我有两个数组,第一个数组是由属性组成的articles数组,第二个数组由第一个数组的元素articles\u id组成,如果articles.id==subcategories.article\u id,我想在新的\u数组\u articles\u sub\u类别中将第一个数组与第二个数组合并 articles = [ { id: 1, title: xxx, description: desc1 }, {

我有两个数组,第一个数组是由属性组成的articles数组,第二个数组由第一个数组的元素articles\u id组成,如果articles.id==subcategories.article\u id,我想在新的\u数组\u articles\u sub\u类别中将第一个数组与第二个数组合并

articles = [
    {
        id: 1,
        title: xxx,
        description: desc1
    },
    {
        id: 2,
        title: yyy,
        description: desc2
    }
]


subcategories = [
    {
        id: 1,
        name: xxx,
        article_id: 1
    },
    {
        id: 2,
        name: yyy,
        article_id: 1
    }
]


new_array_articles_sub_categories = [
    {
        id: 1,
        title: xxx,
        description: desc1
        subcategories: [
            [0] : [
                id: 1,
                name: xxx,
            ]
            [1] : [
                id: 2,
                name: yyy,
            ]
        ]
    },
    {
        id: 2,
        title: yyy,
        description: desc2,
        subcategories: []
    }
]
我试着这样做,但在输出中结果不一样

var new_array_articles_sub_categories = []
for (var i = 0; i < articles.length; i++) {
    for (var k = 0; k < subcategories.length; k++) {
        if(articles[i].id == subcategories[k].article_id){
            new_array_articles_sub_categories.push({

                articles : articles[i],
                subcategories : subcategories[k],
            })
        }
    }
}
var new\u array\u articles\u sub\u categories=[]
对于(var i=0;i
您可以采用哈希表而不是嵌套循环

这种方法只需要两个循环

const
文章=[{id:1,标题:“xxx”,描述:“desc1”},{id:2,标题:“yyy”,描述:“desc2”}],
子类别=[{id:1,名称:“xxx”,文章编号:1},{id:2,名称:“yyy”,文章编号:1}],
subs=subcategories.reduce((r,o)=>((r[o.article_id]??=[])).push(o,r),{}),
结果=articles.map(o=>({…o,子类别:subs[o.id]| |[]}));
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
您可以采用哈希表而不是嵌套循环

这种方法只需要两个循环

const
文章=[{id:1,标题:“xxx”,描述:“desc1”},{id:2,标题:“yyy”,描述:“desc2”}],
子类别=[{id:1,名称:“xxx”,文章编号:1},{id:2,名称:“yyy”,文章编号:1}],
subs=subcategories.reduce((r,o)=>((r[o.article_id]??=[])).push(o,r),{}),
结果=articles.map(o=>({…o,子类别:subs[o.id]| |[]}));
控制台日志(结果)

.as控制台包装{max height:100%!important;top:0;}
以下是工作代码段:

var文章=[{
id:1,
标题:“xxx”,
描述:“描述1”
},
{
id:2,
标题:“yyy”,
描述:“描述2”
}
]
变量子类别=[{
id:1,
名称:“xxx”,
物品编号:1
},
{
id:2,
名称:“yyy”,
物品编号:1
}
]
var新数组文章子类别=[];
对于(var i=0;i日志(新的\u数组\u文章\u子\u类别)以下是工作片段:

var文章=[{
id:1,
标题:“xxx”,
描述:“描述1”
},
{
id:2,
标题:“yyy”,
描述:“描述2”
}
]
变量子类别=[{
id:1,
名称:“xxx”,
物品编号:1
},
{
id:2,
名称:“yyy”,
物品编号:1
}
]
var新数组文章子类别=[];
对于(var i=0;i