美文网首页
js数组24种算法案例

js数组24种算法案例

作者: 那麽快樂 | 来源:发表于2019-06-19 22:07 被阅读0次

1、标准排序
var arr = [5,8,3,6,9]
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
var temp
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}

    }
}
 console.log(arr)
 第二种:冒泡排序
var arr = [5,4,6,1,3,2];

for(var i=0;i<arr.length;i++){
    for(var j=0;j<arr.length-i+1;j++){
        var temp;
        if(arr[j]>arr[j+1]){
            temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}
 
        

 2、字符串出现最多个数(2种)
 .str=”abcdefgaaass”找字符中出现最多的;第一种
    var str ='abcdefgaaass'
      var newarr=str.split("");
      var max=0,val="";
      function fn(arr,a){
        var count=0;
        for(var i=0;i<arr.length;i++){
            if(arr[i]==a){
              count++;
            }
        }
        return count;
      }
      for(var i=0;i<newarr.length;i++){
          var ind=fn(newarr,newarr[i]);
          if(ind>max){
            max=ind;
            val=newarr[i];
          }
      }
      console.log("出现最多的字符是"+val+"出现的次数是"+max)
      第二种
      var strr='aaasssssbbbcccccccccccccccccccccc'
      function change(arr){
        for(var j=0,len=0,str1='';j<arr.length;j++){
            var x = arr.substr(j,1);
            var y = arr.split(x);
            if(y.length-1>len){
                len = y.length-1;
                str1=x+','+len;

            }
        }
            return str1;
      }
      
      console.log(change(strr));

    
    3、编程实现,往数组里插入一个元素
    var arr = ["1411A","44","34305","djg","pic"];
    function fun3(ar,index,date){
        for(var i=ar.length-1;i>=index;i--){
            ar[i+1]=ar[i];
        }
        ar[index] = date;
    }
    fun3(arr,2,"hello");
    console.log(arr);


    4、编程实现IndexOf方法
    var brr=[5,9,6,3,2,5];
    function indexfun(arr,val){
        for(var i=0;i<arr.length;i++){
            if(arr[i]==val){
                return i;
            }
        }
        return -1;
    }
    console.log(indexfun(brr,13));


    5、求数组中最大值和最小值
    var arr=[2,41,3,1,8];
    var  temp=arr[0];

     for(var i=0;i<arr.length;i++){
          if(arr[i]<temp){
            temp=arr[i];
          }
     }
     console.log(temp)

      6、将字符串转换为驼峰形式
    var  str="border-bottom-color";
    function isstr(str){
      var arr=str.split("-");
      var one=arr[0];
      for(var i=1;i<arr.length;i++){
          one+=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
      }
      return one;
    }
    console.log(isstr(str));
    7、var  str='a2b4admin3'字符的每个数字都乘2 ,成为'a4b8admin6'
   var url='a2b4admin3';
   var str11=''
    for(var i=0;i<url.length;i++){
          if(!isNaN(url[i])){
            str11=str11+url[i]*2
          }else{
            str11=str11+url[i]
          }
    }
    console.log(str11)

    8、var  str='a2b4admin3'将字符串中的数字用中括号括起来 'a[2]b[4]admin[3]'
  function  num(str){
  var  arr=str.split('')
  for(var i=0;i<arr.length;i++){
          if(!isNaN(arr[i])){
            arr[i]="["+arr[i]+"]"
          }

  }
    return arr.join('')
  }

 console.log(num(url))
 9、首先判断在数组中哪个数最大,然后让数组中的第一个数与最大的数相乘,返回结果
     function maxn(arr){
            var big=arr[0];
            for(var i=0;i<arr.length;i++){
                if(arr[i]>big){
                    big=arr[i]
                }
            }
            return big*arr[0]
        }
        console.log(maxn([2,1,80,6,10]));

10、 var str='abc' 让字符串重复3遍,成为 str='abcabcabc'
var str='abc';
    function xun(a,b){
        var newstr='';
        for(var i=1;i<=b;i++){
            newstr+=a
        }
        return newstr
    }
    console.log(xun(str,3));

    
    11、10到100的十位随机数并排序
    for(var i=1;i<=10;i++){         
            var ran=Math.floor(Math.random()*91+10)         
        arr.push(ran)
    }
    console.log(arr.sort(function(a,b){return a-b}))

    12、写出一个段脚本,输出当前日期5天之后是星期几,三种方法
    第一种
    /*var now=new Date();
    var day=now.getDate()
    var week=['日','一','二','三','四','五','六']
    now.setDate(day+5)
    console.log('星期'+week[now.getDay()])*/
    第二种
    /*var now=new Date();
    var year=now.getFullYear();
    var month=now.getMonth();
    var date=now.getDate();
    var week=['日','一','二','三','四','五','六']
    var fulture=new Date(year,month,date+5);
    console.log('5天之后是星期'+week[fulture.getDay()])*/
    第三种
    /*var now=new Date();
    var time=now.getTime();
    var fulture=new Date();     
    var ftime=time+24*60*60*1000*5;
    var week=['日','一','二','三','四','五','六']; 
        fulture.setTime(ftime);
    console.log('5天之后是星期'+week[fulture.getDay()])*/

    13、封装一个n天之后是星期几的函数
    function getday(n){
        n=typeof(n)==='undefined'?0:n;
        var now=new Date();
        var time=now.getTime();
        var fulture=new Date();
        var ftime=time+24*60*60*1000*n;
        fulture.setTime(ftime);
        return fulture.getDay();
    }
    console.log(getday());

    14、"wellcome  to beijing"把第一个变大写返回'WellcomeToBeijing'
    和上题相同。驼峰
    

    15、封装一个方法,实现求任意多个数的平均值。
    function f1(){
        用一个变量接收和
        var temp = 0;
        循环每个参数
        for(var i=0; i<arguments.length; i++){
            temp += arguments[i];
        }
        返回平均数
        return temp/arguments.length;
    }
    console.log(f1(1,2,3,4,9))

    16、/*判断字符串是否对称*/
    var  str1="abch6g5g6hcba";       aba
    function isduic(str){
        for(var i=0,len=str1.length;i<len/2;i++){
           alert(str[i]);
          if(str[i]!=str[len-1-i]){str.charAt(i)!=str.charAt(len-1-i);
              return "不对称";
          }
        }
        return "对称";
    }
    console.log(isduic(str1));

    17、千分符
     var str2=46548978911;
    function qianff(str){
        var strn=str.toString(),
            len=strn.length,
            ind=len%3,
            console.log(strn);
            newstr=strn.substr(0,ind);
            console.log(newstr);
            if(ind==0){
               newstr=strn.substr(0,3);
                ind=3;
                console.log(newstr);
            }
            for(i=ind;i<len;i=i+3){
              newstr+=","+strn.substr(i,3);
            }
            return newstr;
    }
    console.log(qianff(str2))

    18、随机生成十六进制的颜色值 var arr=["0","2","3","4","5","6","7","8","9","a","b","c","d"]
    var arrHex=["0","2","3","4","5","6","7","8","9","a","b","c","d"];
    var fuhao = "#";
    for(var i=0;i<6;i++){
        var color = arrHex[Math.floor(Math.random()*arrHex.length)];
        fuhao= fuhao+color;
         str =str+arrHex[a];
    }
    console.log(fuhao);

    19、随机从数组中取出三个不同的值。var arr = [1,2,3,4,5,6,7,8,9];
    var arr = [1,2,3,4,5,6,7,8,9];
    var brr = [];
    for(var i=0;brr.length<3;i++){
        var a = Math.floor(Math.random()*arr.length);
        var b = arr[a];
        if(brr.indexOf(b)==-1){
            brr.push(b);                                                                                        
        }
    }
    console.log(brr);

    20、求数组中字符串的个数
    var str=[0,1,2,3,4,5,"a","b","c","b"],sum=0;
    function strn(arr){
        for(var i=0;i<arr.length;i++){
            if(typeof(arr[i])=="string"){
                sum++;
            }
        }
        return sum;
    }
    console.log(strn(str));

    21、删除数组中指定的值
    var drr = ["1411A","44","34305","djg","pic",100,35,28];
    function fun5(rr,num){
         for(var i = 0; i<rr.length;i++){
            if(rr[i]==num){
                rr.splice(i,1);
                break;
            }
         }
        var newrr = rr.splice(num,1);
        return rr;          
    }
    console.log(fun5(drr,1));

    22、把重复的值放入一个新的数组中  这中方法过于繁琐,可以使用indexOf方法,等于-1判断
    var hrr = ["55","55","2","1"];
    function fun7(rra,num){
        var a = 0;
        for(var i = 0;i<rra.length;i++){
            if(rra[i]==num){
                a++;
            }
        }
        return a;
    }
    var rrb = [];
    for(var i = 0 ;i <hrr.length;i++){
        var length = fun7(hrr,hrr[i]);
        if(length >1){
            rrb.push(hrr[i]);
        }
    }
    console.log(rrb);

    23、截取字符串的var s="abcdefg";截取完成后实现反转功能:g,f,e  其实等同于数组翻转
         第一种
    /*var str="hello";
    var arr=str.split("");
    var rts=arr.reverse();
    console.log(rts);*/
     第二种
    /*var str="hello";
    var strn="";
    for(var i=str.length;i>=0;i--){
        strn+=str[i];
    }
    console.log(strn);*/
    第三种
    /*var str="hello",arr=[];
    for(var i=0;i<str.length;i++){
        arr.unshift(str[i]);
    }
    console.log(arr);*/

    24、拓展一个方法,用于删除数组中的指定值。同21题一样


    附1:编程实现数组中有几个字符串元素
    var brr = ["1411A","44","34305","djg","pic",100,35,28];
    function fun4(crr){
        var count = 0;
        for(var i = 0;i<crr.length;i++){
            if(typeof crr[i] == "string"){
                count++
            }
        }
        return count;
    }
    fun4(brr);
    
    
    附2:数组反转
    var s = "abcdefghiklmn";
    function fun6(str){
         var ss = s.splice("");
        var ss = s.split("");
        var ssa = [];
        for(var i = 0 ;i<ss.length;i++){
            ssa.unshift(ss[i]);
        }
        return ssa.join("");
    }
    fun6(s);
    附3:将所有数组内所有重复的值取出来放到一个新的数组中
   var st="123abcdefgaaaasssssssssssssss123",srn="",cou=0;
   var str=st.split("");
   function stn(srr,strn){
    var count=0;
    for(var i=0;i<srr.length;i++){  
        if(srr[i]==strn){
            count++;
        }
    }
    return count;
   }            
   for(var i=0;i<str.length;i++){
    var anr=stn(str,str[i]);
    if(anr>cou){
        cou=anr;
        srn=str[i];
    }
   }  
   console.log("出现最多的字母是"+srn+"次数"+cou); 



//求出一组数中的最大值和最小值并返回俩数的积
/*var arr=[45,234,24,34,35,4,6,57,65];
function maxValue(arr){
    //假设一个最大值
    var max=0,min=999999999999;
    //遍历数组
    for(var i=0; i<arr.length; i++){
        //判断当前值是否大于max
        if(max<arr[i]){
            max=arr[i];//234
        }
        //判断当前值是否小min
        if(min>arr[i]){
            min=arr[i];//4
            }
        }
    return max*min;


                      }
console.log(maxValue(arr));     */



//10到100的十位随机数并升序排序(不允许重复)
function fn(){
    //定义新数组
    var arr=[];
    while(arr.length<10){
        //随机获取10-100之间的随机数
        var val=Math.floor(Math.random()*91+10);
        //判断获取的随机数 是否出现在新数组中
        if(arr.indexOf(val)==-1){ 
            //将不重复的值添加到新数组中
            arr.push(val); 
            }
                        }
    //返回升序排序的数组
    return arr.sort(function(x,y){return x-y})
    
             }

console.log(fn());

相关文章

  • js数组24种算法案例

    1、标准排序var arr = [5,8,3,6,9]for(var i=0;i arr[j]){temp=arr...

  • 010_scala编程详解数组操作之数组转换

    使用yield和函数式编程转换数组 普通算法 算法案例:移除第一个负数之后的所有负数 优化算法

  • js数组分组和去重

    分组 去重 笔试中经常出现的js数组排序与去重算法

  • JavaScript 中的稀疏数组

    前言 最近有空在看一本关于 JS 数据结构和算法的书,里面有提到数组,却对数组的基本概念轻轻带过,虽然用了 JS ...

  • 算法(二):分而治之

    算法篇的文章主要为对"图解算法"一书的记录与总结 分而治之 分而治之的例子 java实现 快速排序案例 对数组In...

  • JS算法——数组降维

    一:二维数组 1、遍历降维 2、使用concat arr的每一个元素都是一个数组或参数,作为concat方法的参数...

  • JS算法——数组去重

    一:双层循环 使用循环嵌套,最外层循环 array,里面循环 res,如果 array[i] 的值跟 res[j]...

  • js常用技巧一

    目录 一.JS中判断字符串中出现次数最多的字符及出现的次数 二.JS数组去重 三.类的继承 四.排序算法 一.JS...

  • js冒泡排序

    在js的学习中,总会遇到各种各样的算法,今天来详解下js的冒泡排序。 大致原理: 循环整个数组,如果前面的...

  • web前端面试题-javascript(三)-编程算法题(1)

    答案只做参考,如有更好的方法欢迎留言! 1、 实现数组去重方法?(js算法) 利用对象的键值对方法:把数组中的每一...

网友评论

      本文标题:js数组24种算法案例

      本文链接:https://www.haomeiwen.com/subject/vaglqctx.html