• 今天给大家分享一下js中常用的基础算法


        今天给大家分享一下js中常用的基础算法,废话不多说,直接上代码;

    1、两个数字调换顺序

      var a = 2,b=4
      function fun(a,b){
        b = b - a ;// a = 2 ; b = 2
        a = a + b // a = 4 ; b = 2;
        b = a - b;// a = 4 ; b = 2
        return [a,b]
      }
    fun(a,b)   // a = 4 ;b =  2

    2、对象排序,安装对象中的id排序对象的位置;

      var arr = [
          { nama: 'a', id: 55 },
          { nama: 'b', id: 39 },  
          { nama: 'c', id: 59 },
      ]
      var newarr = arr.sort((a,b)=>{
         return a.id - b.id;
      })
    
      console.log(newarr)
    //  {nama: "b", id: 39}
    //  {nama: "a", id: 55}
    //  {nama: "c", id: 59}

    3、冒泡排序 

    function fun(arr) {
      for (let i = 0; i < arr.length - 1; i++) {
        for (let j = 0; j < arr.length - i - 1; j++) {
          if (arr[j] > arr[j + 1]) {
            let temp = arr[j + 1];
            arr[j + 1] = arr[j];
            arr[j] = temp;
          }
        }
      }
      return arr;
    }
    console.log(fun([1, 5, 2, 8, 3, 7])); // [1, 2, 3, 5, 7, 8]

    4、随机出现不同的数字

    function fun (num){
      var arr = [];
      while(arr.length < num){
        var s = parseInt(Math.random() * 100);
        // 如果这个数组中没有这一项才能进去;
        if(!arr.includes(s)){
          arr.push(s)
        }
      }
      return arr;
    }
    //  输入几项就会输出几项不同的数组;
    fun(3)

    5、字符串大小写互换

    function fun (n){
      let str = ''
      for(let i = 0;i < n.length;i++){
        if(n[i] == n[i].toUpperCase()){
          str += n[i].toLowerCase()
        }else{
          str += n[i].toUpperCase();
        }
      }
      return str 
    }
    fun('AbCd') //  aBcD

    6、数组随机打乱

    function fun(arr){
      return arr.sort( ()=>{
        return Math.random() > 0.5 ? 1 : -1
      })
    }
    fun([1,2,3,4,5])

    7、数组扁平化-把多维数组转为一维数组

    function fun (arr){
      var result = [];
      arr.forEach(item =>{
        if(Array.isArray(item)){
          result.push(...fun(item  ))
        }else{
          result.push(item)
        }
      })
      return result
    }
    fun([1,[2,[3,[4,[5]],6,[7]]]]); //  [1, 2, 3, 4, 5, 6, 7]

    8、数组去重

    function fun(arr){
      var newarr = [];
      for(let i = 0; i < arr.length;i++){
        if(!newarr.includes(arr[i])){
          newarr.push(arr[i])
        }
      }
      return newarr;
    }
    fun([1,1,1,2,3,3]) // [1, 2, 3]

    9、数组尾部删除,增加到前面;

    //  用户不输入,默认1项;
    function fun(arr,num = 1){
      for(let i = 0 ; i < num;i++){
        arr.unshift(arr.pop())
      }
      return arr;
    }
    fun([1,2,3,4]  //  [4, 1, 2, 3]

    10、统计字符出现的次数;

    function fun (arr){
      var obj = {};
      for(let i= 0 ; i <arr.length;i++){
        if(obj.hasOwnProperty(arr[i])){
          obj[arr[i]]++;
        }else{
          obj[arr[i]] = 1;
        }
      }
      let cont = 0, num;
      for(let k in obj){
        if(obj[k] > cont){
           cont = obj[k];
           num = k 
        }
      }
      return cont  //  出现最多的次数
      return num // 出现最多的数字
      return obj // 统计所有字符出现的次数
    }
    
    fun('1223334444')

    11、删除数组出出现次数大于2的数组;

    function fun (arr){
      var obj = {};
      for(let i= 0 ; i <arr.length;i++){
        if(obj.hasOwnProperty(arr[i])){
          obj[arr[i]]++;
        }else{
          obj[arr[i]] = 1;
        }
      }
      let newarr = [];
      for(let k in obj){
        if(obj[k] <= 2){
          newarr.push(obj[k])
        }
      }
      return newarr;
    }
    fun([1,2,2,3,3,3,4,4,4,4]) //   [1, 2]

        如果大家喜欢的话,欢迎关注“前端伪大叔”我将为您不间断的分享前端学习知识!

  • 相关阅读:
    二分图之最小边覆盖(poj3020)
    第一章:计算机网络概述
    X Window 简单的新手教程
    SharePoint Permission Analyzer 权限分析仪
    《源创新》:破坏性创新换了个说法,有陷入锤子钉子模式的嫌疑,书中的案例可以看一看。
    《金融可以颠覆历史》:隐藏在历史事件背后的金融制度发展历程
    转发:三伏天话“三伏贴”
    《浪潮之巅》(第2版):精彩的IT商战史
    《史玉柱自述》:管理者要谦虚,好的经营策略是试出来的
    《生活中的经济学》:主张让市场去解决生活中的问题,离中国的现实有点远
  • 原文地址:https://www.cnblogs.com/qdwds/p/11563858.html
Copyright © 2020-2023  润新知