<script>
// name为图书的名称, price为图书的单价,number为图书的数量,series为该图书的种类
let book = [
{ name: "book1", price: "41.50", number: "20", series: "科技" },
{ name: "book2", price: "24.00", number: "30", series: "动漫" },
{ name: "book3", price: "33.00", number: "40", series: "航空" },
{ name: "book4", price: "27.50", number: "50", series: "科技" },
{ name: "book5", price: "58.50", number: "60", series: "航空" },
{ name: "book6", price: "18.75", number: "70", series: "动漫" },
{ name: "book7", price: "31.00", number: "80", series: "科技" },
{ name: "book7", price: "36.00", number: "90", series: "动漫" }
];
// 求出 每个种类有多少本图书, 例如航空类别的有100本书
</script>
先遍历book数组筛选出同类别的书本,一样类别书本的再将它们的number属性加起来就得到最后的总数
时间复杂度为O的思路:
使用一个map存书的类别。
遍历book数组,从map中找相同的key,取值做加法运算,完后再把运算结果保存到map。
let bookObj = {};
book.forEach((item) => {
if (bookObj[item.series]) {
bookObj[item.series] += Number(item.number);
} else {
bookObj[item.series] = Number(item.number);
}
});
console.log(bookObj);//{科技: 150, 动漫: 190, 航空: 100}
let book = [
{ name: "book1", price: "41.50", number: "20", series: "科技" },
{ name: "book2", price: "24.00", number: "30", series: "动漫" },
{ name: "book3", price: "33.00", number: "40", series: "航空" },
{ name: "book4", price: "27.50", number: "50", series: "科技" },
{ name: "book5", price: "58.50", number: "60", series: "航空" },
{ name: "book6", price: "18.75", number: "70", series: "动漫" },
{ name: "book7", price: "31.00", number: "80", series: "科技" },
{ name: "book7", price: "36.00", number: "90", series: "动漫" }
];
// 求出 每个种类有多少本图书, 例如航空类别的有100本书
let obj = {
'科技': {number:0,sumPrice:0},
'动漫': {number:0,sumPrice:0},
'航空': {number:0,sumPrice:0},
}
book.forEach(item=>{
obj[item.series].number += Number(item.number);
obj[item.series].sumPrice += Number(item.number) * Number(item.price);
})
console.log(obj);
计算各类书籍的数量及总价:
望采纳!