统计数组中的重复数据的数量

简介: 这篇文章总结了5种统计数组中重复数据数量的方法。方法1和4使用for循环和对象存储计数;方法2和5利用`reduce`函数,其中方法5是最简写形式;方法3是特定场景下的应用,针对特定值计数。所有方法最终都返回一个对象,键为数组元素,值为出现次数。

统计数组中的重复数据的数量

开发项目时,进行 行列合并时需要计算当前某值的出现次数,从而决定合并的行数,在搜集资料以及思考下做出如下总结

1、方法1

  1. 首先定义一个数组和空对象

     const arr = ['a', 'b', 'c', 'a', 'a', 'b', ''];
     let obj = {}
    
  2. 循环数组,把循环的数据定义为属性名,倘若未找到相关属性值,默认传1, 否则在原有的数字上加1

     arr.forEach(item => {
    
     obj[item] = (obj[item] + 1) || 1
    
     })
    
     console.log(obj)
    
  3. 打印obj内容如下
    在这里插入图片描述

2、方法2

  1. 首先定义一个数组

     const arr = ['a', 'b', 'c', 'a', 'a', 'b', ''];
    
  2. 对array.reduce 中的prev 赋值即可
    reduce 的第一个参数得到的是迭代计算后的效果,所以可以使用第一个参数实现简单的数组去重和排序等

     arr.reduce(function(prev, next){ 
    
             prev[next] = (prev[next] + 1) || 1;
    
             console.log( prev) 
    
         },{});
    
  3. 打印prev内容如下:
    在这里插入图片描述

3、方法3

  1. 简写reduce

     let counts = (arr, value) => arr.reduce((a, v) => v === value ? a + 1 : a + 0, 0);
    
     console.log('数组counts中"李"出现的次数是:'+counts(["李","李","设","弟","弟","生","生","李"],"李"));
    
  2. 输出结果为
```
结果:数组counts中"李"出现的次数是:3
```

4、方法4

  1. 不用reduce时:
     var arr = ["李","李","设","弟","弟","生","生","李"]; 
     function getRepeatNum(){ 
         var obj = {}; 
         for(var i= 0, l = arr.length; i< l; i++){ 
             var item = arr[i]; 
             obj[item] = (obj[item] +1 ) || 1; 
         } 
         return obj; 
     }
     console.log(getRepeatNum());
    
  2. 结果:{李: 3, 设: 1, 弟: 2, 生: 2}

    5、方法5

  3. 用reduce时
      var arr = ["李","李","设","弟","弟","生","生","李"]; 
      function getRepeatNum(){ 
          return arr.reduce(function(prev,next){ 
              prev[next] = (prev[next] + 1) || 1; 
              return prev; 
          },{}); 
      } 
      console.log(getRepeatNum());
    
  4. 结果:{李: 3, 设: 1, 弟: 2, 生: 2}
相关文章
|
6天前
|
人工智能 程序员 数据处理
Pandas数据处理4、DataFrame记录重复值出现的次数(是总数不是每个值的数量)
Pandas数据处理4、DataFrame记录重复值出现的次数(是总数不是每个值的数量)
46 0
Pandas数据处理4、DataFrame记录重复值出现的次数(是总数不是每个值的数量)
|
9月前
|
SQL 分布式计算 MaxCompute
一次性查询一张表所有字段的空值率
一次性查询一张表所有字段的空值率
860 2
|
11月前
|
SQL BI
|
C语言 C++
1684. 统计一致字符串的数目
给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。 请你返回 words 数组中 一致字符串 的数目。
71 0
|
关系型数据库 MySQL 索引
一个表中索引的数量是不是越多越好?
往InnoDB表新增数据时,都会基于主键给自动建立聚簇索引。 随着我们不停的在表里插入数据,会不停的在数据页里插入数据。一个数据页放满后,就会分裂成多个数据页,这时就需要索引页去指向各个数据页。
98 0
|
算法
算法练习——(4)统计特定字符数量
.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
|
存储
有关list根据不同的条件,存储的对应信息数量不同
有关list根据不同的条件,存储的对应信息数量不同
50 0
|
算法 前端开发
统计圆内格点数目
🎈每天进行一道算法题目练习,今天的题目是“统计圆内格点数目”。
163 0
【TP5.1】查询在数组内的所有数据,并且根据用户id分组,计算消费金额总和大于100的数量
【TP5.1】查询在数组内的所有数据,并且根据用户id分组,计算消费金额总和大于100的数量
170 0
【TP5.1】查询在数组内的所有数据,并且根据用户id分组,计算消费金额总和大于100的数量
|
存储 索引
599. 两个列表的最小索引总和 : 哈希表模拟题
599. 两个列表的最小索引总和 : 哈希表模拟题