38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
// Flatten object keys into an array so that we search the entire object by the input value
|
|
const flattenObjectValuesIntoArray = (arrOfObjs) => {
|
|
let flattenedObj;
|
|
const flattenedObjsArr = [];
|
|
for (let obj = 0; obj < arrOfObjs.length; obj++) {
|
|
const objValues = Object.values(arrOfObjs[obj]);
|
|
flattenedObj = [...objValues.flat()]
|
|
flattenedObjsArr.push(flattenedObj)
|
|
}
|
|
return flattenedObjsArr;
|
|
};
|
|
|
|
// Structure filtered books as HTML and return
|
|
const structureBookAsHtml = (book) => {
|
|
const bookDiv = document.createElement("div");
|
|
bookDiv.setAttribute('class', 'bookDiv');
|
|
|
|
const bookTitle = document.createElement("h2");
|
|
bookTitle.innerHTML = book.title;
|
|
bookTitle.setAttribute('class', 'bookTitle');
|
|
|
|
const bookAuthor = document.createElement("h3");
|
|
bookAuthor.innerHTML = book.author;
|
|
|
|
const bookTags = document.createElement("p");
|
|
bookTags.innerHTML = book.tags.join(", ");
|
|
|
|
bookDiv.append(bookTitle, bookAuthor, bookTags);
|
|
|
|
return bookDiv;
|
|
};
|
|
|
|
const renderBooksToDom = (elements) => {
|
|
const bookListContainer = document.querySelector("#bookList");
|
|
bookListContainer.innerHTML = "";
|
|
|
|
bookListContainer.append(...elements);
|
|
}; |