zoukankan      html  css  js  c++  java
  • 渡一 14-1&2 三目运算符,数组,类数组

    三目运算符
    条件判断?是:否 并且会返回值

    var num = 1 > 0 ? 2+2 : 1+1;
    num //4
    
    var num = 1 > 0 ? ('10' > '9' ? 1 : 0) : 2;
    num //0  字符串先比每一位的ASC码,1<9

    数组

    定义方法

    es3.0 es5.0 es6.0
    ECMAScript DOM(html) BOM(浏览器)

    var arr = [];
    var arr = new Array(10); //10代表长度
    
    var obj = {};
    var obj = new Object();
    var obj = Object.create();

    方法

    改变原数组:
    push,pop,shift,unshift,sort,reverse,splice

    push后面加
    pop 后面删除
    unshift 前面加
    shift 前面删


    不改变原数组
    concat,join --> split,toString,slice

    重写push方法

    Array.prototype.push = function(){
        // return "haha";
        for(var i=0;i<arguments.length;i++){
            this[this.length] = arguments[i] //this谁调用就是谁
        }
        return this.length;
    }
    unshift - concat拼
    for(var i=0;i<arr.length;i++){
        newArr.push(arr[i]);
    }

    splice

    var arr = [1,1,2,2,3,3];
    arr.splice(从第几位开始,截取多少的长度,在切口处添加新的数据)
    arr.splice(1,2);    //返回被截取的1,2 arr=[1,2,3,3]
    arr.splice(1,1,0,0,0) //arr=[1,0,0,2,2,3,3]
    
    arr = [1,2,3,5]
    arr.splice(3,0,4)
    
    负数的位置实现
    splice = function (pos){
        pos += pos > 0 ? 0 :this.length;
    }

    sort数组排序

    arr=[1,3,4,0,-1,9]
    arr.sort()           //升序
    arr.sort().reverse //降序
    
    arr=[1,3,5,4,10];
    arr.sort() //[1,10,3,4,5] //当字符按ASC码排序

    规则
    1,必须写两形参
    2,看返回值
      2-1 当返回值是负数时,那么前的面数放在前面 不动位置
      2-2 为正数,那么后面的数在前 互换位置
      2-3 为0,不动

    arr.sort(function(a,b){
        /*
        var c = a > b ? 1 : -1;
        return c;
        */
        return a-b;//升序
        return b-a;//降序
    })
    给一个有序的数组,乱序
    var arr=[1,2,3,4,5,6,7];
    
    arr.sort(function(a,b){
        return Math.random()- 0.5; //-0.5得到负数
    })
    给对象按年龄排序
    var cheng = {
        name : "cheng",
        sex : "male",
        age : 18,
        face : "handsome"
    }
    var deng = {
        name : "deng",
        sex : undefined,
        age : 40,
        face : "amazing"
    }
    var zhang = {
        name : "zhang",
        sex : "male",
        age : 20,
        face : "amazing"
    }
    
    var arr = [cheng,deng,zhang];
    arr.sort(function(a,b){
    
        return a.age - b.age;
    
    })
    //按字符串长度排序
    var arr = ['abc','bcd','cccc','dddd','asdfkhiuqwe','asdoifqwoeiu','asdf'];
    arr.sort(function(a,b){
        return a.length - b.length;
    })
    //接字节长度来排序
    function retByTes(str){
        var num = str.length;
        for(var i=0;i<str.length;i++){
            if(str.charCodeAt(i)>255){
                num++;
            }
        }
        return num;
    }
    var str = 'hello邓';
    retByTes(str); //7
    var arr = ['a邓','b邓','cc邓cc','老邓','残邓','asdoifqwoeiu','asdf'];
    arr.sort(function(a,b){
        return retByTes(a) - retByTes(b);
    })

    concat,toString,join,slice

    concat拼接
    var arr = [1,2,3,4,5,6];
    var arr1 = [7,8,9];
    arr.concat(arr1) //新建立的数组
    
    toString
    var arr=[1,2];
    arr.toString(); //"1,2"
    
    slice截取
    var arr = [1,2,3,4,5,6];
    arr.slice(从该位开始截取,截取到该位)
    
    arr.join("") //返回字符串
    arr.split("") //是string方法,和join是逆向操作,转数组
    
    var str="alibaba";
    var str1="baidu";
    var str2="tencent";
    var str3="toutiao";
    var str4="wangyi";
    var str5="xiaowang";
    var str6="nv";
    var arr = [str,str1,str2,str3,str4,str5,str6];
    arr.join() //默认是,联接 alibaba,baidu...
  • 相关阅读:
    多线程demo
    my parnter code review
    my code review
    思考题
    数组中最大子数组的和
    TestForGit
    say Hellow的测试类及测试结果
    读《Build To Win》感想
    随机生成300道四则运算
    思考题 程序员本计划在三天内完成任务,但在第三天的下午他发现了自己程序的弱点,他在想是否是自己采取另一种方法去解决它,但是需要额外的时间。如若反之,则会在后期团队会在集成方面花费时间。该怎么办?
  • 原文地址:https://www.cnblogs.com/lisa2544/p/15323090.html
Copyright © 2011-2022 走看看