Как отсортировать титры и авторов API Google Книг в ReactJS - PullRequest
0 голосов
/ 05 апреля 2020

При реализации функции просмотра и сортировки для книжного магазина я не нашел способа сортировки строк / массивов. В API заголовок является строкой, а авторы хранятся в массиве. Ниже приведен фрагмент работы сортировки по рейтингу, publishDate и цене.

const filteredBooks = this.state.books.sort((a, b) => {
            const price1 = a.saleInfo.hasOwnProperty('listPrice') == false ? "$0.00" : a.saleInfo.listPrice.amount;
            const price2 = b.saleInfo.hasOwnProperty('listPrice') == false ? "$0.00" : b.saleInfo.listPrice.amount;
            const title1 = a.volumeInfo.hasOwnProperty('title') == false ? "NA" : a.volumeInfo.title;
            const title2 = a.volumeInfo.hasOwnProperty('title') == false ? "NA" : a.volumeInfo.title;

            if(this.state.sort === 'Newest'){
                console.log("in newest")
                return parseInt(b.volumeInfo.publishedDate.substring(0, 4)) - parseInt(a.volumeInfo.publishedDate.substring(0, 4));
            }
            else if(this.state.sort === 'Oldest'){
                return parseInt(a.volumeInfo.publishedDate.substring(0, 4)) - parseInt(b.volumeInfo.publishedDate.substring(0, 4));
            }
            else if(this.state.sort === 'High'){
                return parseInt(b.volumeInfo.averageRating) - parseInt(a.volumeInfo.averageRating);
            }
            else if(this.state.sort === 'Low'){
                return parseInt(a.volumeInfo.averageRating) - parseInt(b.volumeInfo.averageRating);
            }
            else if(this.state.sort === 'Expensive'){
                return parseInt(price2) - parseInt(price1);
            }
            else if(this.state.sort === 'Cheap'){
                return parseInt(price1) - parseInt(price2);
            }
            else if(this.state.sort === 'Title-A'){
                return title2 - title1;
            }
          return;
        })

Я новичок в реакции и javascript, поэтому я был бы признателен за любую помощь. Спасибо!

...