function generateRandomDate() { const year = Math.floor(Math.random() * (2024 - 1900)) + 1900; const month = Math.floor(Math.random() * 12) + 1; const day = Math.floor(Math.random() * 28) + 1; return new Date(year, month - 1, day); } function generateRandomAuthor() { const names = [ 'Александр', 'Екатерина', 'Дмитрий', 'Анна', 'Иван', 'Мария', 'Сергей', 'Ольга', 'Павел', 'Наталья', ]; const surnames = [ 'Иванов', 'Петров', 'Смирнов', 'Кузнецов', 'Васильев', 'Соколов', 'Михайлов', 'Новиков', 'Федоров', 'Морозов', ]; const randomName = names[Math.floor(Math.random() * names.length)]; const randomSurname = surnames[Math.floor(Math.random() * surnames.length)]; return { name: randomName, surname: randomSurname, }; } function generateRandomBook() { return { title: 'Книга ' + Math.floor(Math.random() * 1000), genre: [ 'Фантастика', 'Роман', 'Детектив', 'Фэнтези', 'Приключения', 'Исторический роман', 'Триллер', 'Поэзия', 'Научно-популярная литература', 'Юмористическая проза', ][Math.floor(Math.random() * 6)], publishDate: generateRandomDate(), author: generateRandomAuthor(), pageCount: Math.floor(Math.random() * 500) + 100, }; } function createBooksArray(N) { const books = []; for (let i = 0; i < N; i++) { books.push(generateRandomBook()); } return books; } function findBooksByAuthor(books, authorLastName) { const filteredBooks = books.filter((book) => { return book.author.surname === authorLastName; }); return filteredBooks; } function findBooksByGenre(books, genre) { const filteredBooks = books.filter((book) => book.genre === genre); return filteredBooks; } function findBooksByPublishYearRange(books, startYear, endYear) { const filteredBooks = books.filter((book) => { const publishYear = book.publishDate.getFullYear(); return publishYear >= startYear && publishYear <= endYear; }); return filteredBooks; } function removeBooksPageCount(books, minPageCount) { for (let i = 0; i < books.length; i++) { if (books[i].pageCount < minPageCount) { delete books[i].pageCount; } } return books; } function addAgeInfoToBooks(books) { const currentDate = new Date(); books.forEach((book) => { const yearsSincePublication = currentDate.getFullYear() - book.publishDate.getFullYear(); book.age = yearsSincePublication; }); return books; } // const booksArray = createBooksArray(10); // console.log('Initial array of books:'); // displayBooks(booksArray); // findBooksByAuthor(booksArray, 'Smith'); // findBooksByGenre(booksArray, 'Fantasy'); // findBooksByPublishYearRange(booksArray, 2000, 2010); // booksArray = removeBooksByPageCount(booksArray, 200); // console.log('Array after removing books by page count:'); // displayBooks(booksArray); // booksArray = addAgeInfoToBooks(booksArray); // console.log('Array after adding age info:'); // displayBooks(booksArray);