封装函数判断变量的数据类型 & reduce 统计字符出现频率

131 阅读1分钟

一 、封装函数, 判断变量的数据类型

代码截图如下:

调用判断数据类型.jpg 打印结果如下:

3222.jpg

js源码如下:

// 写一个函数来判断变量的数据类型:
// !1# 封装一个函数
const isType = (con)=>{
  const type = Object.prototype.toString.call(con)
  switch(type){
    case '[object Number]':
      return 'number'
    case '[object String]':
      return 'string'
    case '[object Null]':
      return 'null'
    case '[object Boolean]':
      return 'boolean'
    case '[object Undefined]':
      return 'undefined'
    case '[object BigInt]':
      return 'bigInt'
  }
}

// !2# 调用封装函数并传参
const temp1 = '我是字符串'
console.log(isType(temp1))  //string

const temp2 = 123
console.log(isType(temp2))  //number

const temp3 = null
console.log(isType(temp3))  //null

const temp4 = undefined
console.log(isType(temp4))  //undefined

const temp5 = true
console.log(isType(temp5))  //boolean

二 、统计字符出现的频率(方法一 for)

代码截图如下:

出现字符最多的.jpg 打印结果如下:

3331.jpg

js源码如下:

 const str ='sdadagdsfagdsafsdasaddagd' 
  const obStr = (str) =>{
    const abc = {}
    for(let i = 0;i<str.length;i++){
      if(abc[str[i]]){
        abc[str[i]]++
      }else{
        abc[str[i]]=1
      }
    }
    return abc
  }
  // 此时可以筛选出每个字符出现的次数了
  console.log(obStr(str))  // {s: 5, d: 8, a: 7, g: 3, f: 2}

  function getMax(abc){
    let max = 0
    let srr = ''
    for(let attr in abc){
      if(abc[attr]>max){
        srr = attr
        max = abc[attr]
      }
    }
    return `出现最多的字符是 ${srr} , 出现了 ${max} 次`;
         // 出现最多的字符是 d , 出现了 8 次
  }
  console.log(getMax(obStr(str)))

二 、统计字符出现的频率(方法二 reduce)

代码截图如下:

reduce方法.jpg 打印结果如下:

12121.jpg js源码如下:

  const str ='sdadagdsfagdsafsdasaddagd' 
  console.log(str.split('')) //['s', 'd', 'a', 'd', 'a', ...]
  const r = str.split('').reduce((acc,cur)=>{
    acc[cur] ? acc[cur]++ : (acc[cur] =1)  // 三元写法
    // if(acc[cur]){                      // 常规if 写法
    //   acc[cur]++
    // }else{
    //   acc[cur] =1 
    // }
    return acc
  },{})
  console.log(r) // {s: 5, d: 8, a: 7, g: 3, f: 2}