【发布时间】:2021-07-03 04:31:09
【问题描述】:
我有以下代码,其中我有一组 obj b 是它们的分组方式在 a 中由 elements 定义。
我对如何做到这一点有些疑问。
例如滚动a或b是否正确?
你能帮帮我吗?
const a = [{
_id: 0,
elements: ['aasa', 'cccx', 'zzzx', 'sd']
},
{
_id: 1,
elements: ['bb', 'xx']
}
];
const b = [{
_id: 'aasa',
info: "sssas"
},
{
_id: 'bb'
},
{
_id: 'zzzx',
info: "ssss"
},
{
_id: 'cccx',
info: "sss"
},
{
_id: 'xx'
}
];
// result
[
[{
_id: 'aasa',
info: "sssas"
},
{
_id: 'zzzx',
info: "ssss"
},
{
_id: 'cccx',
info: "sss"
}
],
[{
_id: 'bb'
},
{
_id: 'xx'
}
]
];
c = a.map(el => el.elements)
const p = b
//.map(el => el.elements)
.reduce(function(prev, curr) {
//if
prev.push(curr);
return prev;
}, []);
//console.log("End",p)
【问题讨论】:
-
一行就能搞定:
const c = a.map(item => b.filter(obj => item.elements.includes(obj._id))); -
在你的结果中,id为
cccx的对象排在最后,但在elements中,idcccx在zzzx之前,是否有原因交换订单或者是这个无意间做的? -
@NickParsons:对于它需要我使用它的用途,排序是有影响的。但我认为从后端传给我的数据没有排序,例如元素内部的顺序,它可能不匹配,因为我有所有的 objs。作为一个将 b 用于对象的想法,我一直要求我在 b 中有对象。不知道我解释的好不好。
标签: javascript arrays dictionary object reduce