编写函数统计卡牌花色数量:以花色为键、数量为值返回对象
统计卡牌花色数量的函数实现
需求说明
给定如下卡牌数据数组:
const cardData = [ { suit: "heart", value: 7, }, { suit: "club", value: 8, }, { suit: "club", value: 2, }, { suit: "diamond", value: 2, }, { suit: "diamond", value: 5, }, { suit: "club", value: 10, }, ];
需要编写一个函数,返回一个对象,以花色(suit)作为键,对应花色的卡牌总数量作为值,示例返回结果:{ heart:1, club:3, diamond:2 }
实现方案
可以使用数组的reduce方法高效完成统计,这是处理聚合统计场景的常用方式:
function countCardSuits(cards) { return cards.reduce((countObj, card) => { // 若当前花色未在统计对象中,初始化为0 if (!countObj[card.suit]) { countObj[card.suit] = 0; } // 对应花色计数加1 countObj[card.suit]++; return countObj; }, {}); // 初始化累加器为空对象 } // 调用测试 const result = countCardSuits(cardData); console.log(result); // 输出: { heart: 1, club: 3, diamond: 2 }
逻辑说明
reduce遍历卡牌数组,第一个参数为累加器函数,第二个参数是累加器的初始值(空对象)- 遍历每张卡牌时,检查当前花色是否已存在于统计对象中,不存在则初始化计数为0
- 对应花色的计数加1,最终返回完成统计的对象
内容的提问来源于stack exchange,提问作者Saurav Kamble
相关产品推荐
相关产品推荐

