Necesito algún código que implemente el cálculo del precio promedio de los libros, tipo ROMAN . El campo de tipo se puede escribir en cualquier caso (romano, ROMAN).
let books = [ { name: 'Some-1', author: 'Puskin', type: 'roman', price: 204.5 }, { name: 'Some-2', author: 'Tolstoy', type: 'ROMAN', price: 321.0 }, { name: 'Some-3', author: 'Pero', type: 'tale', price: 211.0 }, { name: 'Some-4', author: 'Koelyo', type: 'roman', price: 204.5 }, { name: 'Some-5', author: 'Christie', type: 'Roman', price: 245.5 }, { name: 'Some-6', author: 'Hohol', type: 'tale', price: 366.0 } ];Así que derivé todos los tipos con este método:
const getType = books.map(({type}) => type.toLowerCase())Y además mi problema es que no sé cómo accedí al precio
Puedes hacerlo en varios métodos.
Puede recorrer la matriz y resumir todos los precios allí y luego dividir su longitud, también verificará si el tipo de objeto actual es igual a roman , usando .toLowerCase()
si desea devolver el número natural, puede usar el método .toFixed()
let books = [ { name: 'Some-1', author: 'Puskin', type: 'roman', price: 204.5 }, { name: 'Some-2', author: 'Tolstoy', type: 'ROMAN', price: 321.0 }, { name: 'Some-3', author: 'Pero', type: 'tale', price: 211.0 }, { name: 'Some-4', author: 'Koelyo', type: 'roman', price: 204.5 }, { name: 'Some-5', author: 'Christie', type: 'Roman', price: 245.5 }, { name: 'Some-6', author: 'Hoho', type: 'tale', price: 366.0 } ] let TotalPrice = 0; let romanPriceLength = 0; for (let i = 0; i < books.length; i++) { if ((books[i].type).toLowerCase() === "roman") { TotalPrice += books[i].price romanPriceLength++ } } console.log(TotalPrice / romanPriceLength) console.log((TotalPrice / romanPriceLength).toFixed(0)) let books = [ { name: 'Some-1', author: 'Puskin', type: 'roman', price: 204.5 }, { name: 'Some-2', author: 'Tolstoy', type: 'ROMAN', price: 321.0 }, { name: 'Some-3', author: 'Pero', type: 'tale', price: 211.0 }, { name: 'Some-4', author: 'Koelyo', type: 'roman', price: 204.5 }, { name: 'Some-5', author: 'Christie', type: 'Roman', price: 245.5 }, { name: 'Some-6', author: 'Hoho', type: 'tale', price: 366.0 } ] let TotalPrice = 0; let romanPriceLength = 0; books.forEach(book => { if((book.type).toLowerCase() === "roman"){ TotalPrice += book.price romanPriceLength ++ } }) console.log(TotalPrice / romanPriceLength) console.log((TotalPrice / romanPriceLength ).toFixed(0)) let books = [ { name: 'Some-1', author: 'Puskin', type: 'roman', price: 204.5 }, { name: 'Some-2', author: 'Tolstoy', type: 'ROMAN', price: 321.0 }, { name: 'Some-3', author: 'Pero', type: 'tale', price: 211.0 }, { name: 'Some-4', author: 'Koelyo', type: 'roman', price: 204.5 }, { name: 'Some-5', author: 'Christie', type: 'Roman', price: 245.5 }, { name: 'Some-6', author: 'Hoho', type: 'tale', price: 366.0 } ] let romanPriceLength = 0; let TotalPrice = 0; for(let book of books){ if(book.type.toLowerCase() === "roman"){ TotalPrice += book.price romanPriceLength++ } } console.log(TotalPrice / romanPriceLength) console.log((TotalPrice / romanPriceLength).toFixed(0))Puedes hacerlo con filter y reduce también:
let books = [ { name: 'Some-1', author: 'Puskin', type: 'roman', price: 204.5 }, { name: 'Some-2', author: 'Tolstoy', type: 'ROMAN', price: 321.0 }, { name: 'Some-3', author: 'Pero', type: 'tale', price: 211.0 }, { name: 'Some-4', author: 'Koelyo', type: 'roman', price: 204.5 }, { name: 'Some-5', author: 'Christie', type: 'Roman', price: 245.5 }, { name: 'Some-6', author: 'Hoho', type: 'tale', price: 366.0 } ] const romans = books.filter(book => book.type.toLowerCase() == 'roman') const romansTotalPrice = romans.reduce((a, {price}) => a + price, 0) const romansAvaragePrice = (romansTotalPrice / romans.length).toFixed(2); console.log(romansAvaragePrice)Utilice un bucle for o forEach() para obtener la suma de los precios y el recuento.
let books = [ { name: 'Some-1', author: 'Puskin', type: 'roman', price: 204.5 }, { name: 'Some-2', author: 'Tolstoy', type: 'ROMAN', price: 321.0 }, { name: 'Some-3', author: 'Pero', type: 'tale', price: 211.0 }, { name: 'Some-4', author: 'Koelyo', type: 'roman', price: 204.5 }, { name: 'Some-5', author: 'Christie', type: 'Roman', price: 245.5 }, { name: 'Some-6', author: 'Hoho', type: 'tale', price: 366.0 } ] let TotalPrice = 0; let count = 0; books.forEach(book => { if (book.type.toLowerCase() == 'roman') { TotalPrice += book.price; count++; } }); console.log((TotalPrice / books.length).toFixed(2))