level-19

作者: lurker | 来源:发表于2016-03-31 15:32 被阅读18次

    基础类型有哪些?复杂类型有哪些?有什么特征?

    基础类型变量有:

    • String类型:"123","简书"
    • Number类型:123
    • Boolean类型:true
    • Undefined类型
    • Null类型

    复杂类型有:

    • Object类型:function,Array ,Date一类。
      基础类型和复杂类型的区别:
    • 保存位置:
      *基础类型保存在栈内存中,复杂类型保存在堆内存中。
    • 访问方式:
      *访问基础类型时,直接操作具体的值。访问复杂类型时,先访问保存在复杂类型中的指针,然后顺着指针去堆内存中寻找具体的值。
    • 复制方式:
      • 基础类型复制相当于,新建一个副本将原来变量A的值赋给变量B,后面变量A发生什么变化,也和B没什么关系
        *复杂类型复制相当于把A变量的指针赋给B变量,两者还是指针指向的是堆内存中的同一个点。如何堆内存中的值发生变化,两者都会发生变化。
        var a=1;
        var b=a;
        a=3;
        console.log(a);//3
        console.log(b);//1
        var arr=[1,2,3,4];
        var arr2=arr;
        arr.push(1);
        console.log(arr.join(""));//12345
        console.log(arr2.join(""));//12345
    

    写一个函数getIntv,获取从当前时间到指定日期的间隔时间

        function getIntv(arr){
            var a=Date.parse("2016-02-08");//除夕日期
            var b=Date.parse(arr);
            var day=Math.floor(((a-b)/(24*3600*1000)));
            var hour=Math.floor(((a-b)-(day*24*3600*1000))/(3600*1000));
            var min=Math.floor(((a-b)-(day*24*3600*1000)-(hour*3600*1000))/(1000*60));
            var sec=Math.floor(((a-b)-(day*24*3600*1000)-(hour*2600*1000)-(min*1000*60))/1000);
    
            var day1=Math.floor(((b-a)/(24*3600*1000)));
            var hour1=Math.floor(((b-a)-(day1*24*3600*1000))/(3600*1000));
            var min1=Math.floor(((b-a)-(day1*24*3600*1000)-(hour1*3600*1000))/(1000*60));
            var sec1=Math.floor(((b-a)-(day1*24*3600*1000)-(hour1*2600*1000)-(min1*1000*60))/1000);
            if(a-b>0){
                str="距除夕还有"+day+"天"+hour+"小时"+min+"分"+sec+"秒";
            return(str);
            }
            else{
                str="距除夕过去"+day1+"天"+hour1+"小时"+min1+"分"+sec1+"秒";
                return(str);
            }
        }
    
        var str = getIntv("2016-02-11");
    console.log(str); 
    

    把数字日期改成中文日期

            var str = getChsDate('2015-01-08');
        console.log(str);  // 二零一五年一月八日
        function  getChsDate(arr){
            var today=new Date(arr);
            var year=["零","一", "二","三","四","五","六","七","八","九"];
            var month=["一", "二","三","四","五","六","七","八","九","十","十一","十二"];
            var day=["一", "二","三","四","五","六","七","八","九","十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","二十一","二十二","二十三","二十四","二十五","二十六","二十七","二十八","二十九","三十","三十一"];
    
    
            year1=((today.getFullYear())+"").split("");
            // console.log(year1);
            month1=((today.getMonth())+"");
            // console.log(month1);
            day1=((today.getDate()-1)+"");//索引计算不一样。减去一个。
            // console.log(day1);
            var year2=[];
            var month2=month[month1];
            var day2=day[day1];
            for(var i=0;i<year1.length;i++){
                year2[i]=year[year1[i]];
            }
            var year3=year2.join("");
    
            var str="输入日期为"+year3+"年"+month2+"月"+day2+"日";
            return str;
    
    var lastWeek =  getLastNDays(7); // ‘2016-01-08’
    var lastMonth = getLastNDays(30); //'2015-12-15'
        function getLastNDays(arr){
            var today=new Date();
            // console.log(today);
            today.setDate(today.getDate()-arr);
            // console.log(today);
            var year=today.getFullYear();
            var month=today.getMonth();
            var day=today.getDate();
    
            var content=(arr+"天前的日期是"+year+"年"+month+"月"+day+"日");
            console.log(content);
        }
    

    完善如下代码,如:

      var Runtime = (function(){
    //初始化类型
    var startTime,endTime,getTime;
      return {
      start: function(){
        startTime=new Date();
        return startTime;
    
      },
      end: function(){
        endTime=new Date();
        return endTime;
      },
      get: function(){
        getTime=endTime-startTime;
        return ("程序运行时间为"+getTime+"毫秒");
      }
      };
      }());
      Runtime.start();
      for(var i=0;i<2000;i++){
        console.log(0);
      }
      Runtime.end();
      console.log(  Runtime.get() );
    

    楼梯有200级,每次走1级或是2级,从底走到顶一共有多少种走法?用代码(递归)实现

        function a(num){
                if(num ==1){
                    return 1;
                }
                    else if (num==2){
                            return 2;
                    }
                        else{
                            return a(num-2)+a(num-1);
                            }
            }
    

    写一个json对象深拷贝的方法,json对象可以多层嵌套,值可以是字符串、数字、布尔、json对象中的任意项

        var json={
            "name":"yahoo",
            "age":"14",
            "sex":"man",
            "address":
        {
        "streetAddress": "21 2nd Street",
        "city": "New York",
        "state": "NY",
        "postalCode": "10021"
        }
        }
            function JSON(arr){
                var newjson= {};
                for(key in arr){
                    if(typeof arr[key]=="object"){
                        newjson[key]=JSON(arr[key]);
                    }
                    else{
                        newjson[key]=arr[key];
                    }
                }
                return newjson;
                // console.log(newjson)
            }
    

    写一个数组深拷贝的方法,数组里的值可以是字符串、数字、布尔、数组中的任意项目

        var arr=[
        1,
        "2",
        3,
        [1,2,3,4],
        true]
        function JSON(arr){
        var newarr=[];
        for(key in arr){
            if(typeof arr[key] =='Array') {
                newarr[key]=Json(arr[key]);
            }
            else{
                newarr[key]=arr[key];
            }
        }
        return newarr;
        }
    

    写一个数组的深拷贝

        var arr=[
        1,
        "2",
        3,
        [1,2,3,4],
        true]
        function JSON(arr){
        var newarr=[];
        for(key in arr){
            if(arr[key] instanceof Array) {
                newarr[key]=Json(arr[key]);
            }
            else{
                newarr[key]=arr[key];
            }
        }
        return newarr;
        }
    

    写一个深拷贝的方法,拷贝对象以及内部嵌套的值可以是字符串、数字、布尔、数组、json对象中的任意项.

        var arr={
            name:"yahoo",
            age:14,
            other:[1,2,true,"yahoo",3],
            man:{
                "man1":"woman",
                "man2":"man2"
                },
            aid:true
        }
        function JOSN(arr){
            var newarr={};
        for(key in arr){
            if (typeof arr[key] =='object'){
                newarr[key]=JOSN(arr[key]);
            }
            else{
                newarr[key]=arr[key];
            }   
            // return newarr;
        }
    
    return newarr;
        }
    

    相关文章

      网友评论

          本文标题:level-19

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