• 面试题


    数组去重:

    var result = [];

    var obj = {};

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

      if( !obj[arr[i]] ){

        result.push( arr[i] );

        obj[arr[i]] = 1;

      }

      return result;

    }

    alert(aaa([ 5,2,7,5,1,7,5,4 ]))

    昌泡排序:(思路是两个两个比较,比较小的放到前面,那么最后的那个就是最大,这样的进行下去)

    function aaa(arr){

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

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

          toCon(j,j+1);

        }

        function toCon(prev,next){

          if(arr[prev] > arr[next] ){

            var tmp = '';

            if( arr[prev] > arr[next] ){

              tmp = arr[prev];

              arr[prev] = arr[next];

              arr[next] = tmp;

            }

          }

          return arr;

        }

      }

    }

    function aaa(n){console.log(n);if(n<=2){return 1;}return aaa(n-1)+aaa(n-2)};

    aaa(8)  // 21

    另一种方式:

    function aaa(n){

    var num1 =1;

    var num2 = 2;

    var num3 = 0;

    for(var i = 0;i<n-2;i++){

      num3=num1+num2;

      num1 = num2;

      num2 = num3;

    }

    return num3

    }

    一种算法  斐波那契   数列    1,1,2,3,5,8,13,21

    如果 n小于100就返回n,否则返回100

    Math.min(n,100)

    var arr = [n,100];

    arr.sort(function(n1,n2){

      return n1-n2

    })

    return arr[0]

    将两个数颠倒

    var a = 5;

    var b = 4;

    a=[a,b];

    b=a[0];

    a=a[1];

    例如如果n=5;不用for循环,返回[1,2,3,4,5]

    function show(n){

    var arr = [];

    return (function(){

    arr.unshift(n);

    n--;

    if(n!=0){

     arguments.callee();

    }

    return arr;

    })()

    }

    变量提前

    var a=10;

    function aaa(){

    alert(a); // undefined

    var a = 20;

    }

    aaa();

    正则:

    var str = 'aaacbbbssseeeee';

    var re = /(w)1+/g;

    str.replace(re,function($0,$1){

      

    })

    给数字加分隔符2,333,455

    (?=) 前向声明

    (?!)反前向声明

    function test( str ){

      var re = /(?=(?!) (d{3})+$)/g;

      return str.replace(re,',')

    }

    alert(test(str))

    函数声明与函数表达式

    unm();

    if(1){

      function unm(){

        console.log(1)

      }

    }else{

      function unm(){

        console.log(2)

      }

    }

    输出结果是2,因为函数声明前置

    var obj = {

      eaa:1,

      eee:function(){console.log(this.eaa)}

    };

    obj.eee() //1;

    另一个题

    var obj = {

      eaa:1,

      eee:function(){console.log(this.eaa)}

    };

    (obj.eee,())

    var num = 0;

    function aaa(){

      console.log(num);

      var num;

    }

    aaa() // undefined  var num变量提升

    题1:

    var a=null;
    undefined
    var b;
    undefined
    a==b
    true

    题2

    var a=1;
    function aaa(a){a=2;console.log(a)}
    aaa(a);
    打印结果是2
    a 在函数外输出a为1
    1

    题3

    var num =2;
    function foo(){return num;function num(){return num +'|'+this.num}}
    foo()
    ƒ num(){return num +'|'+this.num}
    foo()()
    "function num(){return num +'|'+this.num}|2"

    题4

    test();

    function test() {console.log(2)}
    var test = function() {console.log(1)};
    2
    test();
    var test = function() {console.log(1)};

    function test() {console.log(2)}
     2

  • 相关阅读:
    [NOI2005]维护数列——Splay
    [Poi2000]病毒——补全AC自动机
    POJ1509 Glass Beads——SAM(后缀自动机)
    「NOI2011」阿狸的打字机——AC自动机+树状数组
    7.12Test——Graph Theory 1
    [BJWC2010]严格次小生成树
    7.09Test——DS1
    [SCOI2015]小凸想跑步——半平面交
    词频统计器(第三版)
    四则运算(测试)
  • 原文地址:https://www.cnblogs.com/chaoyuehedy/p/8483236.html
Copyright © 2020-2023  润新知