首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示一本书的平均价格

显示一本书的平均价格
EN

Stack Overflow用户
提问于 2021-09-14 21:00:12
回答 5查看 74关注 0票数 0

我需要一些代码,实现计算图书的平均价格,罗马类型。类型字段可以以任何大小写形式写入(罗马、罗马)。

代码语言:javascript
复制
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 }
];

所以我用这个方法派生了所有类型:

代码语言:javascript
复制
const getType = books.map(({type}) => type.toLowerCase())

此外,我的问题是,我不知道如何获得价格

EN

回答 5

Stack Overflow用户

发布于 2021-09-14 21:05:47

有几种方法可以做到这一点

您可以遍历数组并对其中的所有价格求和,然后对其长度进行除法运算,还可以使用.toLowerCase()检查当前对象类型是否等于roman

如果想要返回自然数,可以使用.toFixed()方法

For循环

代码语言:javascript
复制
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))

forEach()

代码语言:javascript
复制
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))

为了..。的

代码语言:javascript
复制
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))

票数 3
EN

Stack Overflow用户

发布于 2021-09-14 21:08:51

使用for循环或forEach()来获取价格和计数的总和。

代码语言:javascript
复制
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))

票数 2
EN

Stack Overflow用户

发布于 2021-09-14 21:30:36

你也可以用filterreduce做到这一点:

代码语言:javascript
复制
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)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69184465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档