zoukankan      html  css  js  c++  java
  • js代码的一些小技巧

    1. 数组中通过赋值语句来改变值

    var a = 1;
    var msg = ["value0","value1"];
    for(var i = 0;i<10;i++){
      alert(msg[a = a == 1 ? 0 : 1]);// 0,1,0,1…
    }

    能实现切换两个不同的值。  msg[a=1] 相当于 msg[1], a=1,同时执行赋值和取值

    2.类型转换

    一般把"123"转成number类型,都是parseInt("123");但是也可以这样:

    var a= "123";//string 10
    var a1 = parseInt(a,10);//number 10
    var a2 = +a;//number 10
    var a3 = a*1;//number 10
    
    
    var a = 0;
    alert(!!a);//强制转换为boolean

    3. onclick和 href

     <a href="go.html" onclick="doSomething();"></a>

    如果跳转之前做判断的话,传统的写法:

    function doSomething(){
        var res = confirm("u want go?");
        if (res) {
            window.location.href = "go.html";
        };
    }

    dosomething返回的是false,则不会跳转页面,so we can achieve it like this:

    function doSomething(){
        return confirm("u want live?");
    }

    4.获取数组中最大最小值

    通常,我们给Array做原型拓展,如下:

            if(typeof(Array.prototype['max']) == 'undefined'){
                Array.prototype.max = function(){
                    var length = this.length;
                    if(length){
                         var max = this[0];
                         for(var i=0;i<length;i++){
                            if(this[i] > max){
                                max = this[i];
                            }
                         }
                         return max;
                    }else{
                        // 空数组
                    }
                   
                }
            }
    
            alert([2,3,19,223].max());//223

    我们知道javascript原生的Math对象提供了比较大小的方法,

    alert(Math.max(1,4,2,919,222));    //919

    同样的 ,我们知道apply方法可以改变this的值,并将参数与数组形式传递,所以可以巧妙的运用:

    if(typeof(Array.prototype['max']) == 'undefined'){
                Array.prototype.max = function(){
                    var length = this.length;
                    if(length){
                        return Math.max.apply({},this);
                    }else{
                        // 空数组
                    }
                   
                }
            }

    或者

    Array.prototype['max'] = Array.prototype['max'] || function(){
      var length = this.length;
                    if(length){
                         var max = this[0];
                         for(var i=0;i<length;i++){
                            if(this[i] > max){
                                max = this[i];
                            }
                         }
                         return max;
                    }else{
                        // 空数组
                    }
    }

    5. javascript 检测对象类型

    /* 检测对象类型
     * @param: obj {JavaScript Object}
     * @param: type {String} 以大写开头的 JS 类型名
     * @return: {Boolean}
     */
    function is(obj, type)  {
      return Object.prototype.toString.call(obj).slice(8, -1) === type;
    }
    

      

    is('sofish', 'String') // true
    is(null, 'Null') // true
    is(new Set(), 'Set') // true
    

    6.正则表达式与replace方法

     str.replace(/正则/,'替换的内容'|| function(match){/* todo */})

    var source = '<tr><td>{$id}</td><td>{$name}</td></tr>';
    console.log(source.replace(/{$id}/g,'10'));
    console.log(source.replace(/[<>&]/g,function(items){
      switch(items){
        case '<' :
          return '<';
          case '>' :
          return '>';
      } 
    }));
    

    7.用js实现随机选取10–100之间的10个数字,存入一个数组,并排序  

  • 相关阅读:
    Memory Limit Exceeded
    浙江省程序设计竞赛2019
    hdu3974 Assign the task
    TCP面向字节流和UDP面向报文的区别
    django-admin和django-admin.py的区别
    利用 pip 安装 Python 程序包到个人用户文件夹下
    PyCharm中目录directory与包package的区别及相关import详解
    分布式表示(Distributed Representation)
    Nginx
    32.最长有效括号
  • 原文地址:https://www.cnblogs.com/teamobaby/p/3859015.html
Copyright © 2011-2022 走看看