按元素Javascript在另一个数组中推送数组
我有两个数组,第一个数组是由属性组成的articles数组,第二个数组由第一个数组的元素articles\u id组成,如果articles.id==subcategories.article\u id,我想在新的\u数组\u articles\u sub\u类别中将第一个数组与第二个数组合并按元素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 = [
{
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