我有一个对象数组,它在JavaScript中有一些属性,基本结构如下:
{
id: 123-456
username: sdfjweihg
}
然后我有三个很大的数组,都是未排序的,都是对象数组,但是对象都有各种不同的匹配字段,但是它们都有一个acccount_id
,匹配上面对象的id
。
上面的对象也以数组的形式出现,所以我做了如下操作:
let fullUsers = [];
for(let i = 0; i < users.length; i++) {
fullUser.push({
user: users[i],
favorite_movie: moviesOfusers.filter((movie) => movie.account_id === users[i].id),
favorite_toys: toysOfusers.filter((toy) => toy.account_id === users[i].id),
favorite_colors: colorsOfUsers.filter((color) => color.account_id === users[i].id)
)};
}
其中moviesOfusers
,toysOfUsers
和colorsOfUsers
是数组,它们有各种各样的其他属性,但匹配account_id。它工作正常,做我想要的,但我需要一些CPU密集度更低和更快的东西。如果有人有任何建议,以实现相同的搜索和附加,这是更好的,我喜欢一些新的想法。谢谢!
3条答案
按热度按时间fzwojiic1#
你能做的最好的事情就是在一次迭代中把每个大数组都简化成一个Map...
然后。
不知道这是否能给你带来足够的好处。
6jjcrrmo2#
您可以预先计算电影、玩具和汽车的帐户ID的簿记数组:
db2dz4w83#
就我个人而言,我只会将用户Map到一个键控集,然后使用它来循环其他项。
另一种方法是Map所有数据源,并在循环访问用户时将它们组合起来。