zoukankan      html  css  js  c++  java
  • javascript内置对象一: Array数组

    在JavaScript中的任何事物,字符串,数组,函数等等都是对象。

    理解:浏览器自己封装好的对象,可以直接使用。

      

    push   /pʊʃ/  增加 在末尾增加              unshif   /ʌn'ʃɪft/   将这些元素插入到一个数组的开始部分

    pop   /pɒp/   删除末尾一个                  shift   /ʃɪft/   移除第一个

      

    如果数组全是数字时使用arr.sort()会产生错误的排序结果,这里需要修正如:

    var arr = [-5,23,-4,55,-16,-11,25];

    console.log(arr.sort());

    var result = arr.sort(function(a,b){ return a-b; })  这样输出才正确,必须指定排序条件指定 由小到大 升序排列即可。

    ===============

    <script>
        //创建数组的两种方式:
        //一,构造函数表示法 var array=new Array(n);  方法Array()中的 Array首字母必须大写。 n从0开始,为0可以不写,表示空数组。
        //二,字面量表示法:var infos=[5,"nam",true,Object]; 数组可以用来保存一组不同类型的数据
        //此外使用索引进行读写修改值:
        //读:console.log(infos[3]);
        //改:infos[3]="woaini";
        //数组的length属性可以获得数组里面的数据长度:console.log(infos.length);
        
        //构造函数表示法
        var nums=new Array(3);//已知数组长度,不写长度默认为零。即空数组。
        var colors=new Array();//定义空数组。       
        var pics=new Array(1,2,3,4);//已知数组内容。
        console.log(colors);
        console.log(nums);
        console.log(pics);

        //字面量表示法,可以任意类型数据。{email:304676177@qq.com}Object对象
        var infos=[6,"zheng",true,{email:"304676177@qq.com"}]
        console.log(infos[3]);//数组取值,下标从0开始
        infos[2]="aini";//修改对应索引的数组值。
        console.log(infos[2]);
        console.log(infos[5]);//超过数组下标的索引,显示未定义undefined;


        //数组中四个栈方法。栈方法只能增删数组第一个和最后一个值
        //push()  unshift()  pop()  shift()
        //array.push(a,b,c...); 在数组后面添加n个值。返回值:添加后数组长度。
        //array.unshift(a,b,c,d...);在数组前面添加n个值。返回值:添加后数组长度。
        //array.pop();删除数组最后一个值。返回值:被删除的对象。
        //array.shift();删除数组第一个值。返回值:被添加的对象。
        var array=[1,"a","b",2,3];
        var len=array.push(4,5,6,7);//数组最后添加n个值:(4,5,6,7)
        document.write(array+"<br/>");//输出添加后的整个数组
        document.write(len);//输出添加后数组的长度,等于array.length.

        var a=[1,"a","b",2,3];
        var len=a.unshift(4,5,6,7,8);//数组前面添加n个值:(4,5,6,7,8)
        document.write(a+"<br/>");//输出添加后的整个数组
        document.write(len);//输出添加后数组的长度,等于array.length.

        var b=[1,"a","b",2,3];
        var obj=b.pop();//删除数组最后一个值:3。可以调用多次,表示删除多次。
        document.write(b+"<br/>");//输出删除后的整个数组。
        document.write(obj);//输出被删除的对象:3

        document.write("<hr/>");
        var c=[1,"a","b",2,3];
        var obj=c.shift();//删除数组第一个值:1。可以调用多次,表示删除多次。
        document.write(c+"<br/>");//输出删除后的整个数组。
        document.write(obj);//输出被删除的对象:1


        //-------join分隔符---------
        var str=["a","b","c","d","e"];
        //array.join(separator);  使用分隔符把数组组成一串字符串。
        //separator分隔符,不写默认在数组中插入逗号。可自定义连接符。返回值:字符串。
        console.log(str.join()); //默认把数组用逗号分开重新组成一串字符串。
        console.log(str.join("-"));//把数组用 “-” 分开重新组成一串字符串。
        console.log(str.join("+++"));//把数组用 “-” 分开重新组成一串字符串。

        //-------reverse反序---------
        var array=[1,2,3,4,5];
        //array.reverse(); 反序,把数组的顺序颠倒过来。返回值:数组
        console.log(array.reverse());// 5,4,3,2,1

        var array=["e","d","g","b","h"];
        console.log(array.sort());//降序:b,d,e,g,h 。
        //使用默认排序:a到b降序,如果想反过来就使用array.reverse()进行排序。
        console.log(array.sort().reverse());//反序: h,g,e,d,b

        //-------sortby排序依据---------
        //说白了只有两种排序:
        //sort()方法用于对数组的元素进行排序,sort里面可以接收一个比较函数作为参数,return y-x时是降序排序;return x-y时,升序排序。
        //一,array.sort() 默认升序排列,按照第一个字符排序(遵循:1-9,a-b)。另含有字母的所有数组都是按照首字符进行排序。
        //二,纯数字,按照整个数字进行大小排序:
        //1, array.sort(sort(function(a,b){return a-b}));  升序
        //2, array.sort(sort(function(a,b){return b-a}));  降序

        var array=["uef",22,66,9,"def",-44,-12,"gge"];
        console.log(array.sort());//默认排序,第一个字符排序
        //array.sort(sortby);按照某种规则排序。默认按照所有数组值的第一个字母或者数字进行排序:1到9,再a到b...
        //数组字母,数字混排,无法比较大小,则下面自定义排序规则,是按照数组对象的第一个数字或首字母进行排序的:先1到9,再a到b。。。返回值:数组
        //sort(:排序依据,对于数字,字母混排无法比较大小,按照第一个字母或数字,按照1-9,a-b排序。
        //sortby:排序依据,对于纯数字,是对整个数组对象的大小进行升降序排列,return a-b 升序 ,return b-a降序
        //一, array.sort(sort(function(a,b){return a-b}));  升序
        //二, array.sort(sort(function(a,b){return b-a}));  降序

        var array=[21,144,32,74,15];//纯数字,按照每个值大小进行排序。
        console.log(array.sort());//默认按照首字符排序。 144, 15, 21, 32, 74
        console.log(array.sort(function(a,b){return a-b}));//升序: 144, 15, 21, 32, 74
        console.log(array.sort(function(a,b){return b-a}));//降序:144, 74, 32, 21, 15

        var array=["dbg","eee","jgs","ttt","fff"];
        console.log(array.sort());//默认排序,和 自定义a-b,按照首字母升序排列
        console.log(array.sort(function(a,b){return a-b}));//升序:按照首字母升序排列
        console.log(array.sort(function(a,b){return b-a}));//降序:按照首字母降序排列

        var array=["e",8,"d",66,"g","b",16,"h",9];
        console.log(array.sort());//默认按照首字符排序:1-9再a-b。
        console.log(array.sort(function(a,b){return a-b}));//升序:h,g,e,d,b,8,9,16,66
        console.log(array.sort(function(a,b){return b-a}));//降序:66,16,9,8,b,d,e,g,h

    </script>

    ===============

    <script>
    //==============数组操作方法concat合并,slice截取===============
        //concat 合并多个数组
        //array.concat(arr1,arr2,arr3...)  使用array与多个数组合并,返回值:数组。
        var array=[];//字面量创建数组
        var arr1=["a","b","c"];
        var arr2=["d","e","f"];
        var arr3=[1,2,3,4];
        console.log(array.concat(arr1,arr2,arr3));

        //slice截取
        //var arr=[]; arr=array.slice(start,end); start,end截取数组所以start到end-1。即:不包含end。
        //如果end是负数:-2,即:start=array.length-2;即从start开始截取到end-1。
        var cols=["red","blue","yellow","orange","green","pink"];
        console.log(array=cols.slice(0));//slice(n),表示从数组的索引n开始一直截取到最后。这里相当于复制。
        console.log(array=cols.slice(2,5));//表示从数组索引2截取到5,不包括5。5是不包括。
        console.log(array=cols.slice(-2,5));//如果start是负数,array.length数组长度加上-2等于4,即截取范围:4到5,不包括5.
        //console.log(array=cols,slice(5,3)); //start=5,end=3, start>end 报错slice is undefined。未定义。

    //-----------
        //面试题,复制下面数组,越多越好
        var newArray;//未定义,所以使用时千万记住先声明定义,即使是null或者是空"",也比undefined好,因为undefined很有可能会报错。
        var arr1=["a","b","c"];
        var arr2=["d","e","f"];
        var arr3=[1,"yes",5,"false"];

        //复制数组方法一:
         //声明未定义的变量
        newArray1=new Array();//构造函数定义空数组。构造函数使用(),字面量创建数组才使用[]。
        newArray1=[].concat(arr1);//array.concat(arr1,arr2,arr3),合并多个数组。[]表示一个空数组。
        console.log(newArray1);

        //复制数组方法二:
        //声明未定义的变量
        newArray2=new Array();//构造函数定义空数组。构造函数使用(),字面量创建数组才使用[]。
        newArray2=arr2.slice(0);
        console.log(newArray2);

        //复制数组方法三:
        //声明未定义的变量
        newArray3=new Array();//构造函数定义空数组。构造函数使用(),字面量创建数组才使用[]。
        for (var i = 0; i < arr3.length; i++) {
            newArray3.push(arr3[i]);
        }
        console.log(newArray3);
    </script>

    ============

    <script>
        //splice /splaɪs/  拼接  
        //删除,添加,替换:array.splice(index,n,"a","b","c","d");
        //index,n :表示从索引index开始删除n个元素。然后在索引index前面添加:"a","b","c","d"。
        //index,n,n=0时,表示删除0个元素,即表示添加:"a","b","c","d"。
        //省略: "a","b","c","d";   array.splice(index.n);表示从索引index开始,删除n个元素。
        
        var array=["a","b","c","d","e","f"];
        //删除
        var arr=array.splice(2,3);//表示从索引值从2开始,删除三个数组元素。
        var arr=array.splice(2);//表示索引值从2开始,删除后面的所有数组元素。
        var arr=array.splice(2,0);//表示索引值从2开始,0表示删除个数,所以一个都不删除。
        console.log(array);
        console.log(arr);


        var array=["a","b","c","d","e","f"];
        //添加 返回值:空数组
        arr1=array.splice(2,0,1,2,3);//2,0 :表示从索引2开始不删除任何值,在索引2的前面添加:1,2,3。
        console.log(arr1);//添加操作返回值为空数组
        console.log(array);//Array(9) [ "a", "b", 1, 2, 3, "c", "d", "e", "f" ]

        var array=["a","b","c","d","e","f"];
        //替换  返回被删除的数组
        arr2=array.splice(2,2,1,2,3,4);//2,2 :表示从索引2开始删除两个元素,且从索引2开始添加数组:1,2,3,4。
        console.log(arr2);//返回值:Array(3) [ "c", "d"]
        console.log(array);//返回值:Array(8) [ "a", "b", 1, 2, 3, 4, "e", "f" ]
    </script>

    ==================================

    CSS3中

      

    <script>
        //==========ECMAScript新增属性,存在兼容性==============
        //indexOf(searchValue,startIndex),lastIndexOf(searchValue,startIndex)是ECMAScript新增属性,存在兼容性
        
        var array=[1,2,"b",3,4,"a","b",4,"c","d"];
        //array.indexOf(searchValue,startIndex索引值可选); 存在返回searchValue的索引,不存在则返回-1.
        //从数组索引startIndex,开始向后查找searchValue所在的索引值。
        var pos=array.indexOf("b");//返回Number:2  从数组开头查找第一个"b"的索引。
        console.log(pos);//返回Number:2;
        var pos1=array.indexOf("b",3);//返回Number:6  从数组的索引3开始向后寻找"b"的索引
        console.log(pos1);//返回Number:6

        var array=[1,2,"b",3,4,"a","b",4,"c","d"];
        //array.lastIndexOf(searchValue,startIndex索引值可选); 存在返回searchValue的索引,不存在则返回-1.
        //从后向前查找数组中searchValue的索引值。
        var p1=array.indexOf("b");//返回:2    从数组前面向后面查找第一个"b"的索引值。
        console.log(p1);//返回:2   查找对象存在返回索引值,不存在返回:-1.
        var p=array.lastIndexOf("b");//返回:6   从数组后面向前查找第一个"b"的索引值。
        console.log(p);//返回:6   查找对象存在返回索引值,不存在返回:-1.
        var p2=array.lastIndexOf("b",5);//返回值:2,索引5的位置:"a",即从索引值:5 = "a"的位置开始向前查找第一个"b"的索引。
        console.log(p2);

        //indexOf(searchValue,startIndex),lastIndexOf(searchValue,startIndex)是ECMAScript新增属性,存在兼容性
        //为了兼容其他浏览器可以自己封装一个方法进行兼容:
        function ArrayIndexOf(array,searchValue){
            for (var i = 0; i < array.length; i++) {//遍历数组
                if (array[i]===searchValue) {//遍历数组,是否有值全等于searchValue。一定要全等,因为7不等于"7"。
                    return i;//数组中存在searchValue,获取该值的索引值。
                }
            }
            return  -1;//不存在,则返回number:-1.
        }
        var array=[1,2,"b",3,4,"a","b",4,"c","d"];
        alert(ArrayIndexOf(array,"c"));//从前向后查询数组中"c"的索引值:8
    </script>

  • 相关阅读:
    XAF中实现Combox属性编辑(官方)
    XAF 支持多数据库
    XAF 如何使用复合主键和复合外键
    如何禁止双击ListView记录显示DetailView?
    XAF中主从列表模式下获取当前主对象实例
    使用一个非持久字段PersistentAlias
    XAF 如何将文件存储在文件系统中而不是数据库中
    XAF中如何制作弹出窗体选择数据到ListView列表
    XAF 如何用其他线程更新对象
    XPO中 聚合函数的使用(Count,Max,Sum,Min)
  • 原文地址:https://www.cnblogs.com/Knowledge-is-infinite/p/10801044.html
Copyright © 2011-2022 走看看