统计数组中元素出现个数JS

使用javascript统计数组中元素出现的个数

 let arrName = ['丁丁', '迪西', '啦啦', '小波', '啦啦', '迪西']
 // 1
//1、 创建一个空的Object
//2、 接着去循环遍历数组的每一项
//3、 将目标数组循环的项作为空对象的key,再判断key对应的值是否存在
//4、 不存在就则将key值设置为1(也就是第一次出现)
//5、 若已经存在的话,应把当前的值+1即可
  let obj = {}
  arrName.forEach(ele => {
    if (obj[ele]) {
      obj[ele]++
    } else {
      obj[ele] = 1
    }
  })
  // 2
  //使用Array.prototype.reduce
  // 其中,第一个参数callback函数: pre为上次return的值,next为数组的本次遍历的项
 // 第二个参数为初始值,也是第一个pre
  const totalObj = arrName.reduce((pre, next) => {
    if (pre[next]) {
      pre[next]++
    } else {
      pre[next] = 1
    }
    return pre
  }, {})
  // 3
  /* 1、创建一个空Map
  2、 依然是循环目标数组的每一项
  3、 将数组循环的项作为空Map的key,获取M对应的值
  4、 如果已经有值就把对应的值+1后从新赋值
  5、 如果没有值就创建新的数据项,设置值为1 */
  // 与对象的key会被自动转换为字符串类型把不同,es6的Map类型的key可以是任意类型
  let mapObj = new Map()
  arrName.forEach(ele => {
    let num = mapObj.get(ele)
    if (num) {
      mapObj.set(ele, ++num)
    } else {
      mapObj.set(ele, 1)
    }
  })
  console.log('统计', obj)
  console.log('统计2', totalObj)
  console.log('统计3', mapObj)
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值