Javascript 通过匹配值搜索辅助数组并合并到主数组中
我有2个数组,我试图在第二个数组中找到与第一个数组中的对象Id匹配的数组对象。从那里,我需要将匹配的对象附加到主对象。我还需要只获取前3个匹配对象的键值。我一直在尝试使用下划线,但这只会将匹配的数组合并在一起。这就是我需要实现的,任何帮助都会很好Javascript 通过匹配值搜索辅助数组并合并到主数组中,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我有2个数组,我试图在第二个数组中找到与第一个数组中的对象Id匹配的数组对象。从那里,我需要将匹配的对象附加到主对象。我还需要只获取前3个匹配对象的键值。我一直在尝试使用下划线,但这只会将匹配的数组合并在一起。这就是我需要实现的,任何帮助都会很好 var primaryArray = [ { "Name": "Main 1", "Id": "1" }, { "Name": "Main 2", "Id": "2" } ] var secondar
var primaryArray = [
{
"Name": "Main 1",
"Id": "1"
},
{
"Name": "Main 2",
"Id": "2"
}
]
var secondaryArray = [
{
"name": "Person 1",
"mainitemId": "1",
"count": 120
},
{
"name": "Person 2",
"mainitemId": "1",
"count": 80
},
{
"name": "Person 3",
"mainitemId": "1",
"count": 125
},
{
"name": "Person 4",
"mainitemId": "1",
"count": 130
},
{
"name": "Person 5",
"mainitemId": "2",
"count": 90
},
{
"name": "Person 6",
"mainitemId": "2",
"count": 85
},
{
"name": "Person 7",
"mainitemId": "2",
"count": 105
},
{
"name": "Person 8",
"mainitemId": "2",
"count": 110
}
]
var resultArray = [
{
"Name": "Main 1",
"Id": 1,
"people": [
{
"name": "Person 4",
"mainitemId": "1",
"count": 130
},
{
"name": "Person 3",
"mainitemId": "1",
"count": 125
},
{
"name": "Person 1",
"mainitemId": "1",
"count": 120
}
]
},
{
"Name": "Main 2",
"Id": 2,
"people": [
{
"name": "Person 8",
"mainitemId": "2",
"count": 110
},
{
"name": "Person 7",
"mainitemId": "2",
"count": 105
},
{
"name": "Person 5",
"mainitemId": "2",
"count": 90
}
]
}
]
如果您想根据计数值获得前3名,则应为
var result = primaryArray.map(item => {
item.people = secondaryArray.filter(peop => peop.mainitemId === item.Id)
.sort((a, b) => b.count - a.count)
.slice(0, 3);
return item;
})
最终结果:
您尝试过什么?您正在寻找几种方法,合并数组,按对象值搜索,并可能进行排序以确定前3名(什么决定了前3名?)。网络上有很多关于如何完成每个部分的例子。挑一个试试看。如果您对代码有问题,请将其发布在这里,我们将查看它。另外,请参阅,如果适用,请使用您自己的代码解决问题,谢谢Faly,这太完美了,省去了我的头疼,我一直在尝试.map>\uuuu.extend>.findWhere,但没有给出我需要的结果的第一部分!不客气!