JavaScript 常见面试题

此文内容多为 JavaScript 对数组理解及运用。

 

  1、如何消除一个数组里面重复的元素?

    var arr = [1, 2, 3, 3, 4, 4, 5, 5, 6, 1];
    var newArr =[];
    for(var i =0; i<arr.length; i++){
        if(newArr.indexOf(arr[i])<0){
            newArr.push(arr[i]);
        }
    }
    console.log(newArr);

 

  2、es6 利用 set 数组去重方法

    changeReArr=(arr)=>{
      // 利用set将数组转化成set数据,利用Array from 将set数据转化成数组
      return Array.from(new Set(arr));
    }
    console.log(changeReArr([3,3,45,6,7,8,9,5,4]));

 

  3、es6 set 第二种方法

    changeReArr2=(arr)=>{
      // 利用...扩展运算付将set中的值遍历出来重新定义一个数组
      // ... 是利用for...of 遍历的
      return [...new Set(arr)]
    }
    console.log(changeReArr2([3,3,45,6,7,8,9,5,4]));

 

 

  4、实现数组的随机排序

    // 方法一
    var arr = [1,2,3,4,5,6,7,8,9,10];
    function randSort1(arr){
         for(var i = 0,len = arr.length;i < len; i++ ){
              var rand = parseInt(Math.random()*len); 
              var temp = arr[rand]; 
              arr[rand] = arr[i]; 
              arr[i] = temp; 
            } 
            return arr; 
        }
    console.log(randSort1(arr));

    // 方法二
    var arr = [1,2,3,4,5,6,7,8,9,10];
    function randSort2(arr){
        var mixedArray = [];
        while(arr.length > 0){
            var randomIndex = parseInt(Math.random()*arr.length);
            mixedArray.push(arr[randomIndex]);
            arr.splice(randomIndex, 1);
        }
        return mixedArray;
    }
    console.log(randSort2(arr));

    // 方法三
    var arr = [1,2,3,4,5,6,7,8,9,10];
    arr.sort(function(){
        return Math.random() - 0.5;
    })
    console.log(arr);

 

  5、生成十个10到100的随机数 并添加到数组里 并排序

    var iArray = [];
    function getRandom(istart,iend)
    {
        var ichoice = iend - istart;
        return Math.floor(Math.random() * ichoice + istart);
    }

    for(var i =0; i<10; i++){
        var nums = getRandom(10,100);
        if(iArray.indexOf(nums) < 0){
            iArray.push(nums);
        }else{
            iArray.push(getRandom(10,100));
        }
    }
    iArray.sort();
    console.log(iArray);

 

  6、把两个数组合并,并删除第二个元素。

    var arr1 = ['a','b','q'];
    var arr2 = ['w','e','r'];
    var meshArr = arr1.concat(arr2);
    meshArr.splice(1,1);
    console.log(meshArr);

 

  7、提取URL中的各个GET参数

    var urlStr = "http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e";
    function serilizeUrl(url)
    {
        var result = {};
        url = url.split("?")[1];
        var map = url.split("&");
        for(var i = 0; i<map.length; i++){
            result[map[i].split("=")[0]] = map[i].split("=")[1];
        }
        return result;
    }
    console.log(serilizeUrl(urlStr));

 

  8、输出今天的日期,以YYYY-MM-DD的方式,比如今天是2014年9月26日,则输出2014-09-26

    var date = new Date();
    var dateYear = date.getFullYear();
    var dateMonth = date.getMonth() + 1;

    dateMonth = dateMonth < 10 ? '0'+dateMonth : dateMonth;

    var dateDays = date.getDate();

    dateDays = dateDays < 10 ? '0'+dateDays : dateDays;

    console.log(dateYear + '-' + dateMonth + '-' + dateDays);

 

posted @ 2018-03-15 22:49  _whys  阅读(370)  评论(0编辑  收藏  举报