вывести среднюю цену книги
Подскажите пожалуйста примеры или какие-то сайты на которых я смогу больше прочитать инфы для решения задачи. Мне нужен код, который реализует подсчет средней цены книг типа ROMAN. Поле type может быть написано в любом регистре символов (roman, 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 }
];
Ответы (2 шт):
Заведи две переменных изначально равные нулю.
Пройди по всему массиву. Для каждого элемента приводи значение type к нижнему регистру и проверяй равно ли оно roman. Если да -- к первой переменной прибавляй price, а ко второй 1.
Если вторая переменная не нуль, подели первую на вторую. Это ответ.
И не слушай нехороших людей из комментов) Методы надо использовать там, где они нужны, а не там, где они снижают читаемость.
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 }
];
function averagePriceBook(books) {
let arr = [];
//Выборка цен жанра роман
for (key in books) {
let i = books[key].type.toLowerCase();
if (i == 'roman'){
arr.push(books[key].price);
console.log(books[key]);
}
}
//Массив из цен жанра роман
let averagePrice = arr.reduce((total, average) => {
return total + average;
}, 0)
averagePrice = averagePrice / arr.length;
averagePrice = averagePrice.toFixed(1);
//Нахождение ближайшей цены к среднему арифметическому цен массива
let closest = arr.sort( (a, b) => Math.abs(averagePrice - a) -
Math.abs(averagePrice - b) )[0];
console.log(`Массив цен жанра Роман: `, arr); //[245.5, 204.5, 204.5, 321]
console.log(`Среднее арифмитическое цен: `, averagePrice); //243.9
console.log(`Средняя цена за книгу: `, closest); //245.5
}
averagePriceBook(books);