js之数组及关于数组的一些面试题

这篇总结一些数组的大体知识轮廓以及一些常见的面试题。

这里写图片描述
1这里是书中关于数组方面的一些例子

    //检测类数组对象
    function isArrayLike(o){
        if(o && typeof o == 'object' && isFinite(o.length) && o.length >= 0 && o.length === Math.floor(o.length) && o.length <
        4294967296){
            return true;
        }else{
            return flag;
        }
    }
    //在数组中查找所有出现的x,并返回一个包含匹配索引的数组
    function findall(a,x){
        var a = [],
                len = a.length,
                pos = 0;
        while(pos<len){
            pos = a.indexOf(x,pos);
            if(pos == -1) break;
            a.push(pos);
            pos = pos + 1;
        }
        return a;
    }

//寻找两个数组中相同的元素中最小的元素

const a = [1, 2, 5, 9, 10]
const b = [3, 4, 6, 9, 10]

function findElement (a, b) {
    let i = j = 0
    while (i < a.length || j < b.length) {
        if (a[i] === b[j]) {
            return a[i]
        } else if (a[i] > b[j]) {
            j ++
        } else if (a[i] < b[j]) {
            i ++
        }
    }
    return null
}

console.log(findElement(a, b))

2.数组去重

    var arr=[1,1,1,2,2,1,3,1,3,4,5,6];

    function arrDel(arr){

      var result=[],

             obj={};

          for(var i in arr){

           if(!obj[arr[i]]){ //判断对象的属性

               result.push(arr[i]);

                  obj[arr[i]]=1;

           }

          }

          return result;

    }



    console.log(arrDel(arr));

3. 数组冒泡排序

 function bubbleSort(arr){

      for(var i=0;i<arr.length-1;i++){

           for(var j=i+1;j<arr.length;j++){

               //获取前一个值和后一个值进行比较

                  if(arr[i]>arr[j]){

                        //创建中间变量 交换值

                     var cur=arr[j];

                        arr[j]=arr[i];

                        arr[i]=cur;

                  }

           }

          }

          return arr;

    }

4.数组快速排序

    function quickSort(arr){

     if(arr.length<=1){return arr};



     //选基准值,可以是任意位置

   var key=Math.floor(arr.length/2);

     var keyValue=arr.splice(key,1)[0];



     //定义两个数组

     var left=[];

     var right=[];



     for(var i=0;i<arr.length;i++){



           //小于基准的方左边、大于右边

        if(arr[i]<keyValue){

               left.push(arr[i]);

           }else{

               right.push(arr[i]);

           }

     }

     //递归

     return quickSort(left).concat([keyValue],quickSort(right));

     //return typeof keyValue;

    }



    var array=[5,1,6,4,10,11,15,0,2];

    console.log(quickSort(array));

    //console.log(bubbleSort(array));       

7.判断一个字符串中出现次数最多的字符,统计这个次数

var str=’addddfffssdfsadfsdfsafjsd’;

   var json={}; //定义对象来存放 对象属性的值



   //遍历字符串,将重复出现的字符 累加

   for(var i=0;i<str.length;i++){

     if(!json[str.charAt(i)]){

            json[str.charAt(i)]=1;

     }else{

         json[str.charAt(i)]++;

     }

   }



   var iMax=0;

   var icur='';

   console.log(json);//{a:3,d:8,f:7,s:6,j:1}



   //遍历 json对象取最大值

   for(var val in json){

     if(json[val]>iMax){

        iMax=json[val];

           icur=val;

     }

   }



   console.log('出现最多的字符:'+icur,'出现次数:'+iMax);        

猜你喜欢

转载自blog.csdn.net/oncemore520/article/details/80735593