Javascript/Node.js以最小的时间复杂度将数组与对象数组映射
假设我有一个具有books id的数组,例如Javascript/Node.js以最小的时间复杂度将数组与对象数组映射,javascript,arrays,node.js,javascript-objects,recursive-datastructures,Javascript,Arrays,Node.js,Javascript Objects,Recursive Datastructures,假设我有一个具有books id的数组,例如[1,42,34,56,21,8,88,32]都是不同的,我有一个图书对象数组,例如: [ { BookId: 34, BookName: Foo1 }, { BookId: 56, BookName: Bar1 }, { BookId: 1, BookName: Foo2 }, ..... ] 书籍的顺序与书籍id数组的顺序不同,尽管两个数组的大小相同,但我希望生成一个书籍数组,以书籍idarray的顺序排列 我可以使用嵌套
[1,42,34,56,21,8,88,32]
都是不同的,我有一个图书对象数组,例如:
[
{
BookId: 34, BookName: Foo1
},
{
BookId: 56, BookName: Bar1
},
{
BookId: 1, BookName: Foo2
},
.....
]
书籍的顺序与书籍id数组的顺序不同,尽管两个数组的大小相同,但我希望生成一个书籍数组,以书籍idarray
的顺序排列
我可以使用嵌套循环,但这将是m×n的复杂性。
所以基本上我想执行类似于SQL
join的操作
有可能降低复杂性吗?试试以下方法:
const-id=[1,34,56,21];
常数书=[
{BookId:34,BookName:'Foo34'},
{BookId:56,BookName:'Bar56'},
{BookId:1,BookName:'Foo1'},
{BookId:21,BookName:'Foo21'},
];
books.sort((a,b)=>ids.indexOf(a.BookId)-ids.indexOf(b.BookId));
控制台。日志(书籍)代码>嗯,如果您不想在控制器中执行此操作,那么您应该指定您使用的数据库。如果SQL
,那么在调用API时有几种方法可以执行JOIN
。我有两个数据库,我从mongo获取书籍ID数组,然后从postgres获取书籍,因此不可能执行JOIN操作。这很有效!!!idk为什么被否决,另一个线程在我的例子中不起作用,因为在那个例子中数组已经被排序了