首页 > 编程语言 >JS 算法

JS 算法

时间:2022-09-28 11:59:26浏览次数:43  
标签:arr obj value JS 算法 let str unique

1、js 统计一个字符串出现频率最高的字母/数字

  let str = 'absafdaf234234323232'

      let a = [...str]
    //   alert(a instanceof Array)
    const strChar = str => {
      let strArr = [...str]
      maxValue='',
      maxKey = ''
      obj = {}

      strArr.forEach(val =>{
        obj[val] = obj.hasOwnProperty(val) ? obj[val]+1 : 1
        if(obj[val] > maxValue){
            maxValue = obj[val]
            maxKey = val
        }
      })
      return {
        key: maxKey,
        value: maxValue
      }
    }

    console.log(strChar(str))  // {key: 3, value: 5}

2、数组去重

forEach

let arr = ['1', '2', '3', '1', 'a', 'b', 'b']
const unique = arr => {
    let obj = {}
    arr.forEach(value => {
// 对象key值是唯一, 使用 Object.keys 转为数组形式 obj[value] = 0 }) return Object.keys(obj) } console.log(unique(arr)) // ['1','2','3','a','b']

 

filter

  let arr = [1,2,2,2,5,3,4,5,1]
   const unique = arr => {
     return  arr.filter((ele,index, array) =>{
        return index === array.indexOf(ele)
      })
   }
  let v =  unique(arr)
  console.log(v)

set

let arr = ['1', '2', '3', '1', 'a', 'b', 'b']
const unique = arr => {
    return [...new Set(arr)]
}
console.log(unique(arr))  // ['1','2','3','a','b']

 

reduce

let arr = ['1', '2', '3', '1', 'a', 'b', 'b']
const unique = arr.reduce((map, item) => {
    map[item] = 0
    return map
}, {})
console.log(Object.keys(unique))  // ['1','2','3','a','b']

 

3、翻转字符串

let str ="Hello Dog";
const reverseString = str =>{
    return [...str].reverse().join("");
}
console.log(reverseString(str))   // goD olleH

数组中最大差值

forEach

let arr = [23, 4, 5, 2, 4, 5, 6, 6, 71, -3];
const difference = arr => {
    let min = arr[0],
        max = 0;
    arr.forEach(value => {
        if (value < min) min = value
        if (value > max) max = value
    })
    return max - min ;
}
console.log(difference(arr))  // 74

 

冒泡

 

标签:arr,obj,value,JS,算法,let,str,unique
From: https://www.cnblogs.com/mc-congxueda/p/16730920.html

相关文章

  • 前端加密算法之SM4
    1、简介1.1、国产加密算法,是一个分组算法,该算法的分组长度为128bit,密钥长度为128bit,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算......
  • 算法和空间复杂度分析
    看代码:1intcal(intn){2intsum=0;3inti=1;4for(;i<=n;++i){5sum=sum+i;6}7returnsum;8从cpu角度来看,这段代码每一行都执行......
  • JS数组去重
    1、方法<!--*@Descripttion:数组去重*@version:0.0.1*@Author:PengShuai*@Date:2022-09-2613:16:04*@LastEditors:PengShuai*@LastEditTime:202......
  • js 倒计时按钮可用
    HTML<aclass="btnbtn-default"id="enterBtn"disabledstyle="margin-top:2rem"href="legalnewform.html">已知晓,进入法律咨询<spanid="countDown"styl......
  • 如何学习ReactJS:初学者完整指南
    英文| https://www.geeksforgeeks.org/how-to-learn-reactjs-a-complete-guide-for-beginners/?ref=rp翻译 |web前端开发(ID:web_qdkf)每个前端开发人员和Web开发人员都知......
  • 11._jsp_el_jstl
    ......
  • 前端加密算法之SHA1
    1、简介和前篇所讲的MD5加密算法一样,都属于哈希算法,尽管安全性要高于MD5,但运算速度要比MD5慢2、实现因为同属于哈希算法,所以也可以使用hashlib库实现1impo......
  • java算法学习——选择排序算法
    研究生生活开始后,充分认识到算法的重要性,开始重拾java算法——视频参照哔哩哔哩左神——https://www.bilibili.com/video/BV13g41157hK/?p=4&spm_id_from=333.880.my_hist......
  • vue2.x引入threejs
    @目录vue2.x引入threejsnpm安装使用指定版本:其他插件实例强调vue2.x引入threejsnpm安装npminstallthree使用指定版本:npminstallthree@<版本号>其他插件因为本......
  • 算法 玩转数据结构 2-5 包含,搜索和删除
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13410 1重点关注1.1continue,break,return的区别for循环中,continue结束本轮循环,b......