统计对象数组中排除k值重复的符合v条件的记录数量
解决方案
实现思路
- 第一步:过滤出所有
v值等于指定目标值的对象 - 第二步:提取过滤结果中所有对象的
k字段值,通过自动去重的结构完成相同k值的去重 - 第三步:统计去重后
k值的数量,即为最终统计结果
代码实现(JavaScript)
// 原始对象数组 const originArr = [ {k:"a",v:"y"}, {k:"b",v:"o"}, {k:"d",v:"y"}, {k:"b",v:"o"} ]; // 封装统计方法,入参为要匹配的v值 function getCount(targetV) { // 筛选符合v值的记录,提取k值存入Set自动去重,返回去重后的数量 const uniqueKSet = new Set( originArr.filter(item => item.v === targetV).map(item => item.k) ); return uniqueKSet.size; } // 示例测试 console.log(getCount('y')); // 输出 2,匹配示例结果 console.log(getCount('o')); // 输出 1,匹配示例结果
逻辑说明
用filter方法提前筛除不匹配v值的无关数据,减少后续处理的计算量;利用Set结构元素唯一的特性自动完成k值去重,不需要手动编写循环判断逻辑,代码简洁且执行效率更高,直接读取Set的size属性即可拿到最终计数结果。
内容的提问来源于stack exchange,提问作者Michael Phandera
相关产品推荐
相关产品推荐

