【问题标题】:Javascript/Node.js mapping an array with array of objects with minimum time complexity [duplicate]Javascript / Node.js用最小时间复杂度的对象数组映射数组[重复]
【发布时间】:2020-03-21 17:58:07
【问题描述】:

假设我有一个包含书籍 ID 的数组,例如 [1,42,34,56,21,8,88,32] 全部不同,并且我有一个书籍对象数组示例:

[
 {
  BookId: 34, BookName: Foo1
 },
 {
  BookId: 56, BookName: Bar1
 },
 {
  BookId: 1, BookName: Foo2
 },
.....
]

书籍与书籍 ids 数组的顺序不同,尽管两个数组的大小相等,但我想要一个结果数组,按书籍 ID array 的顺序排列。

我可以使用嵌套循环,但这将是 m×n 复杂度。 所以基本上我想执行类似SQL join.

是否可以降低复杂度?

【问题讨论】:

  • 好吧,如果您不想在controllers 中执行此操作,那么您应该指定您使用的数据库。 IF SQL 那么有几种方法可以在调用 API 时执行 JOIN
  • 我有两个数据库,我从 mongo 获取书籍 ID 数组,然后从 postgres 获取书籍,因此无法执行连接

标签: javascript arrays node.js javascript-objects recursive-datastructures


【解决方案1】:

试试这个:

const ids = [1,34,56,21];
const books = [
{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));
console.log(books);

【讨论】:

  • 这行得通!!!知道为什么它被否决了,另一个线程在我的情况下不起作用,因为在这种情况下数组已经排序
猜你喜欢
  • 2020-08-16
  • 2012-04-02
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多