JavaScript该怎么分组求和


<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);

计算各类书籍的数量及总价:

img

望采纳!

img