Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/Node.js以最小的时间复杂度将数组与对象数组映射_Javascript_Arrays_Node.js_Javascript Objects_Recursive Datastructures - Fatal编程技术网

Javascript/Node.js以最小的时间复杂度将数组与对象数组映射

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的顺序排列 我可以使用嵌套

假设我有一个具有books id的数组,例如
[1,42,34,56,21,8,88,32]
都是不同的,我有一个图书对象数组,例如:

[
 {
  BookId: 34, BookName: Foo1
 },
 {
  BookId: 56, BookName: Bar1
 },
 {
  BookId: 1, BookName: Foo2
 },
.....
]
书籍的顺序与书籍id数组的顺序不同,尽管两个数组的大小相同,但我希望生成一个书籍数组,以书籍id
array
的顺序排列

我可以使用嵌套循环,但这将是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为什么被否决,另一个线程在我的例子中不起作用,因为在那个例子中数组已经被排序了