Javascript 如何返回地图

Javascript 如何返回地图,javascript,async-await,Javascript,Async Await,我用以下方法完成了这个捐赠项目 我遇到的问题是第三种方法(getAuthorsBookCount())我不知道如何编写它我应该使用map,有人能帮我吗。 您还可以检查我的代码是否正常。 getBook(bookName):返回book对象(如果存在),否则为空 页面数大于x的GetBooks(页面数): 返回页面数大于给定页面数的所有书籍。例如,如果用户调用pageCount=1000的函数。它应该返回pagecount>1000的所有书籍 getAuthorBooks(作者): 返回该特定作

我用以下方法完成了这个捐赠项目

我遇到的问题是第三种方法(getAuthorsBookCount())我不知道如何编写它我应该使用map,有人能帮我吗。 您还可以检查我的代码是否正常。


getBook(bookName):返回book对象(如果存在),否则为空

页面数大于x的GetBooks(页面数): 返回页面数大于给定页面数的所有书籍。例如,如果用户调用pageCount=1000的函数。它应该返回pagecount>1000的所有书籍

getAuthorBooks(作者): 返回该特定作者编写的所有书籍。 注:有些书的作者不止一位。你也应该考虑这些问题,并归还它们。

getAuthorsBookCount(): 返回一个映射,其中包含作者姓名及其作者的书籍计数


BooksRepo类

class BooksRepo {
    constructor() {
        this.fse = require('fs-extra');
        this.catalogFilePath = '../data/catalog.books.json';
    }

    async readFileAsync(filePath) {
        let data = await this.fse.readFile(filePath);
        let parsedData = await JSON.parse(data);
        return parsedData;
    }

    async getBook(bookName) {
        let books = await this.readFileAsync(this.catalogFilePath);
        let book = books.find(b => b.title == bookName);
        return book;
    }

    async getBooksWIthPageCountMoreThanX(pagecount){
        let books = await this.readFileAsync(this.catalogFilePath);
        let book = books.find(b => b.pageCount > pagecount);
        return book;
    }

    async getAuthorBooks(author){
        let books = await this.readFileAsync(this.catalogFilePath);
        let book = books.find(b => b.authors.contains(author));
        return book;
    }

    async getAuthorsBookCount(){
        let books = await this.readFileAsync(this.catalogFilePath);
        let author = books.find(b => b.authors );
        return book;
    }

    async getBooksbyCatagory(category){
        let books = await this.readFileAsync(this.catalogFilePath);
        let book = books.find(b => b.categories == category);
        return book;

    }
}

module.exports = BooksRepo ;
catalogFile:其结构示例


您可以像这样将标题作者转换为地图

const map = new Map();
  books.forEach((item)=>{
  if(item){
    const key = item.title;
    map.set(key,item.authors);
  }  });
var authArray=[];
var authCountArray=[];
for(设i=0;i
您想使用
过滤器
而不是
映射
。exchange网络上还有一个专门为@Adriani6而设的站点。你能用代码告诉我怎么做吗
const map = new Map();
  books.forEach((item)=>{
  if(item){
    const key = item.title;
    map.set(key,item.authors);
  }  });
    var authArray = [];
    var authCountArray = [];

    for (let i = 0; i < inputJson.length; i++) {
        authArray = inputJson[i].authors;
        for (let j = 0; j < authArray.length; j++) {
            authCountArray[authArray[j]] = ((authCountArray[authArray[j]] === undefined) ? 0 : authCountArray[authArray[j]]) + 1;
        }
    }

   //we can use it like this
    getAuthorsBookCount(authName){
        return authCountArray[authName];
    }