• javascript小练习3


    1--取出数组1与数组2的共同部分元素

    思想1:将数组1放入map中,然后对数组2进行遍历,数组2中的元素在map中不存在时不操作,如果数组2中的元素在map中已经存在,将其push进一个新数组newArr,最后返回该新数组。

    function getSameNums(arr1,arr2){
        var mp={};
        var newArr=[];
        for(var i=0;i<arr1.length;i++){
            if(!mp[arr1[i]]){
                mp[arr1[i]]=1;
            }
        }
        for(var i=0;i<arr2.length;i++){
            if(mp[arr2[i]]){
                newArr.push(arr2[i]);
            }
        }
        return newArr;
    }
    var arr1 = [4,2,1,10,5];
    var arr2 = [2,3,4,0,10,5];
    console.log(getSameNums(arr1,arr2));
    

     思想2:将数组1、数组2进行升序排序,然后分别从头开始遍历,比较。如果相等,将该元素push进一个新数组;如果数组1中的该元素大于数组2中的该元素,将该数组1中的该元素与数组2中的下一个元素进行比较;如果数组1中的该元素小于数组2中的该元素,将该数组1中的下一个元素与数组2中的该元素进行比较

        var arr = [];
        arr1.sort(sortby);
        arr2.sort(sortby);
        var i=0;
    var j=0; while(i<arr1.length && j < arr2.length){ if(arr1[i] == arr2[j]){ arr.push(arr1[i]); i++;
    j++; }else if(arr1[i]>arr2[j]){ j++; }else{ i++; } } return arr; } var arr1 = [4,2,1,10,5]; var arr2 = [2,3,4,0,10,5]; console.log(getSameNums(arr1,arr2));

     思想3:将数组1进行升序排序,定义一个全局新数组,然后遍历数组2,利用二分查找判断数组2中的元素是否在数组1中,不在不操作,在的话将其push进一个新数组,最后返回。调用方法,再打印出该新数组。

    function sortby(a,b){
        return a - b ;
    }
    var newArr = [];
    function binarySearch(arr,findVal,leftIndex,rightIndex){ if(leftIndex>rightIndex){ return ; } var midIndex=Math.floor((leftIndex+rightIndex)/2); var midVal=arr[midIndex]; if(midVal>findVal){ binarySearch(arr,findVal,leftIndex,midIndex-1); }else if(midVal<findVal){ binarySearch(arr,findVal,midIndex+1,rightIndex); }else{ newArr.push(findVal) return ; } } function getSameNums(arr1,arr2){ arr1.sort(sortby); for(var i=0;i<arr2.length;i++){ binarySearch(arr1,arr2[i],0,arr1.length-1); } } var arr1 = [4,2,1,10,5]; var arr2 = [2,3,4,0,10,5]; getSameNums(arr1,arr2); console.log(newArr);

     

    2017-7-22小记

    (1)

    var a=false;
    if(a){
        console.log("a is true")
    }else{
        console.log("a is false")   //a is false
    }
    

     

    var a=new Boolean(false);
    if(a){
        console.log("a is true")  //a is true
    }else{
        console.log("a is false")
    }
    

     

    (2)

    "use strict"
    str="haha"
    console.log(window.str);  //报错 undefined
    var str="ee"
    console.log(str)     //ee
    

     

    (3)

    var x=0;
    var y=1;
    var z=2;
    console.log(x||y); //1
    console.log(y&&z); //2
    console.log(y&z);  //0
    console.log(x|y);  //1
    

     

    (4)

    function num(a){
        var n=10;
        return function(b){
            n+=10;
            return (a+b+n);
        }
    }
    var n=num(10);
    console.log(n(10));  //40
    console.log(n(10));   //50
    

     

    2017-7-26 小记

     (1)实现spacify('hello world') // => 'h e l l o  w o r l d'

    String.prototype.spacify = function(){ 
          return this.split('').join(' '); 
     } 
      console.log('hello world'.spacify());//'h e l l o  w o r l d'
    

     


     

    (2)实现 log函数log('hello world');

    function log(){ 
        var args = Array.prototype.slice.call(arguments); 
        args.unshift('(app)'); 
        console.log.apply(console, args); 
    }; 
    log('hello world'); //(app) hello world
    

    ps:arguments为伪数组,需要利用Array.prototype.slice先转换为真正数组,然后利用unshift方法在其头部插入元素。

     

    (3)

    var User = { 
        count: 1, 
        getCount: function() {    return this.count; 
        } 
    }; 
    console.log(User.getCount()); //1 
    var func = User.getCount; 
    console.log(func());//undefined 
    //ps:func的上下文是`window,因此已经失去了count属性

     

     

    var User = { 
        count: 1, 
        getCount: function() {    return this.count; 
        } 
    }; 
    var func = User.getCount.bind(User); 
    console.log(func());//1
    

     

    (4)

    function getMax(str){  //字符串中出现次数最多的字符及次数 
        var mp={}; 
        var max=0; 
        var tmpkey=0; 
        for(var key in str){ 
            if(!mp[str[key]]){ 
                mp[str[key]]=1; 
            }else{ 
                mp[str[key]]++; 
            } 
        } 
      //  return mp; 
        for(var key in mp){ 
            if( mp[key]>max){ 
                max= mp[key]; 
                tmpkey=key 
            } 
        } 
        //console.log(mp[tmpkey]) 
        var obj ={} 
        obj[tmpkey] = mp[tmpkey] 
        return obj 
    } 
    var str="aaaaaabbgd"; 
    console.log(getMax(str));
    
     
    

     

    2017-7-30 小记

    (1)

    <script>
        var str="孙若水";
    //    alert(str);
    //    var beginStr=str.slice(1);
    //    var beginStr=str.substr(1,2);
        var beginStr=str.substring(1,3)
        var psd="";
        for(var i= 0;i<1;i++){
            psd+="*";
        }
        var strNew=psd+beginStr;
        alert(strNew);
    //    alert(beginStr);
    </script>
    
    

    (2)

    var str = "16826275903"
    var begStr = str.slice(0,3)
    console.log(begStr)
    var endStr = str.slice(-3)
    console.log(endStr)
    var passwdStr = ""
    for(var i =0; i< str.length - 6; i++ ) passwdStr+="*";
    var tmpStr = begStr + passwdStr + endStr
    console.log(tmpStr)
    

     2017-7-31小记

    /**
     * Created by DELL on 2017/7/31.
     */
    console.log(typeof undefined === 'undefined'); //true
    console.log(typeof undefined === undefined);   //false
    console.log(typeof undefined == undefined);   //false
    
    console.log(typeof true ==='boolean');//true
    console.log(typeof true ===Boolean);//false
    console.log(typeof true ==Boolean);//false
    
    console.log(typeof 42 === 'number');//true
    console.log(typeof 42 === Number);//false
    console.log(typeof 42 == Number);//false
    
    console.log(typeof '42' === 'string');//true
    console.log(typeof '42' === String);//false
    console.log(typeof '42' == String);//false
    
    console.log(typeof {life:42} === 'object');//true
    console.log(typeof {life:42} === Object);//false
    console.log(typeof {life:42} == Object);//false
    
    console.log(typeof Symbol() === 'symbol');//true
    console.log(typeof Symbol() === Symbol);//false
    console.log(typeof Symbol() == Symbol);//false
    
    console.log(typeof null === 'object');//true
    console.log(typeof null === 'null');//false
    //console.log(typeof null === Null);//Null is not defined
    
    //ps:typeof运算符可查看值的类型,返回的是类型的字符串值,除了null //检测null值的类型 var a = null; console.log((!a && typeof a === 'object'));//true

     ps:JavaScript中的变量是没有类型的,值才有。变量可以随时持有任何类型的值。在对变量执行typeof操作时,返回的并不是该变量的类型,而是该变量持有的值的类型。

     

     

    宝剑锋从磨砺出,梅花香自苦寒来。
  • 相关阅读:
    234. Palindrome Linked List
    Remove duplicates
    Unsorted, maximum ==> sorted
    Find one unique integer
    TwoSum
    13. Roman to Integer
    38. Count and Say
    543. Diameter of Binary Tree
    LuoguP1131 [ZJOI2007]时态同步 (树形DP,贪心)
    Luogu3177 [HAOI2015]树上染色 (树形DP)
  • 原文地址:https://www.cnblogs.com/haimengqingyuan/p/7058165.html
Copyright © 2020-2023  润新知