Build a Book Organizer - Build a Book Organizer

Tell us what’s happening:

Can anyone help me to pass this test? No matter what I do, It always returns me bellow error.

“9. You should call the sort higher order function by passing the sortByYear callback function on the filteredBooks array.”

:dotted_line_face:

Your code so far

let books = [
    {
        title: "To Kill a Mockingbird",
        authorName: "Harper Lee",
        releaseYear: 1960
    },
    {
        title: "1984",
        authorName: "George Orwell",
        releaseYear: 1949
    },
    {
        title: "Pride and Prejudice",
        authorName: "Jane Austen",
        releaseYear: 1813
    },
    {
        title: "Madol Doova",
        authorName: "Martin Wickramasinghe",
        releaseYear: 1947
    },
    {
        title: "Gamperaliya",
        authorName: "Martin Wickramasinghe",
        releaseYear: 1944
    },
    {
        title: "2001: A Space Odyssey",
        authorName: "Arthur C. Clarke",
        releaseYear: 1968
    }
];

const sortByYear = (book1, book2) => {
    if (Number(book1.releaseYear) < Number(book2.releaseYear)) {
        return -1
    } else if (Number(book1.releaseYear) > Number(book2.releaseYear)) {
        return 1
    } else {
        return 0
    }
};

const filterByYear = year => books.filter((element) => element.releaseYear > Number(year));

//let filteredBooks = filterByYear("1932").sort((book1, book2) => book1.releaseYear - book2.releaseYear);

let filteredBooks = filterByYear("1932").sort(sortByYear);

// Testing Area ↓
/*console.log(sortByYear(books[2], books[1]));
books.push({
    title: "X",
    authorName: "The Mr. X",
    releaseYear: "1944"
});
console.log(sortByYear(books[4], books[6]));*/
console.log(filteredBooks);

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36

Challenge Information:

Build a Book Organizer - Build a Book Organizer

Can you describe how you believe your code meets that requirement?

1 Like

Just wanted to follow up. I apologize for the initial confusion regarding higher-order functions and callbacks. I was recovering from being ill and wasn’t able to practice coding for a bit, which made things a bit hazy.

I spent some time reviewing the concepts and watching the lecture videos again, and it clicked. I’ve refactored my code using filter() and sort() with the appropriate callback functions:

let books = [
    {
        title: "To Kill a Mockingbird",
        authorName: "Harper Lee",
        releaseYear: 1960
    },
    {
        title: "1984",
        authorName: "George Orwell",
        releaseYear: 1949
    },
    {
        title: "Pride and Prejudice",
        authorName: "Jane Austen",
        releaseYear: 1813
    },
    {
        title: "Madol Doova",
        authorName: "Martin Wickramasinghe",
        releaseYear: 1947
    },
    {
        title: "Gamperaliya",
        authorName: "Martin Wickramasinghe",
        releaseYear: 1944
    },
    {
        title: "2001: A Space Odyssey",
        authorName: "Arthur C. Clarke",
        releaseYear: 1968
    }
];

const sortByYear = (book1, book2) => {
    if (Number(book1.releaseYear) < Number(book2.releaseYear)) {
        return -1
    } else if (Number(book1.releaseYear) > Number(book2.releaseYear)) {
        return 1
    } else {
        return 0
    }
};

const filterByYear = year => books.filter((element) => element.releaseYear > Number(year));

let filteredBooks = filterByYear("1932");

filteredBooks.sort(sortByYear);

// Testing Area ↓
/*console.log(sortByYear(books[2], books[1]));
books.push({
    title: "X",
    authorName: "The Mr. X",
    releaseYear: "1944"
});
console.log(sortByYear(books[4], books[6]));*/
console.log(filteredBooks);

This worked perfectly and allowed me to complete the task. Thank you very much for your time and help in guiding me to the solution.

Best regards. :sparkling_heart:

1 Like