• JS数组用法总结


    01.创建数组
    //创建一个元素个数为0的数组
    var mArray = [];
    var mArray = new Array();
    
    //创建一个元素个数为size的数组[每个数组元素的值均为"undefined"]
    var mArray = new Array(size); 
    
    //创建数组,并使用"element_0, element_1, ..., element_n"参数列表赋值
    var mArray = [element_0, element_1, ..., element_n];
    var mArray = new Array(element_0, element_1, ..., element_n);
    
    02.数组赋值
    //使用下标访问赋值
    //被跳过而未被赋值的元素,其值为undefined
    var mArray = new Array("AA");
    mArray[0] = "BB"; //mArray:["BB"],mArray.length:1
    mArray[1] = "CC"; //mArray:["BB", "CC"],mArray.length:2
    mArray[3] = "DD"; //mArray:["BB", "CC", undefined, "DD"],mArray.length:4
    
    //unshift方法向数组的开头添加一个或多个元素,并返回新数组的长度
    //语  法:mArray.unshift(element_0, element_1, ..., element_n)
    var mArray = new Array("AA");
    mArray.unshift("BB");       //mArray:["BB", "AA"],mArray.length:2
    mArray.unshift("CC", "DD"); //mArray:["CC", "DD", "BB", "AA"],mArray.length:4
    
    //push方法向数组的末尾添加一个或多个元素,并返回新数组的长度
    //语  法:mArray.push(element_0, element_1, ..., element_n)
    var mArray = new Array("AA");
    mArray.push("BB");         //mArray:["AA", "BB"],mArray.length:2
    mArray.push("CC", "DD");   //mArray:["AA", "BB", "CC", "DD"],mArray.length:4
    
    //使用splice方法向数组指定位置前插入一个或多个元素
    //语   法:mArray.splice(index,howmany,element_0, element_1, ..., element_n)
    //参   数:index 必需。
    //         表明添加/删除项目的位置,使用负数可从数组结尾处规定位置。
    //参   数:howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
    //参   数:element_0, element_n	可选。向数组添加的新项目。
    //注   释:如果仅纯粹添加元素,则howmany的值需指定为0,此时方法返回值为"[]"
    var mArray = new Array("AA", "BB", "CC");
    mArray.splice(1, 0, "DD", "EE"); //mArray:["AA", "DD", "EE", "BB", "CC"]
    
    //使用数组的length属性扩充数组
    //设置length属性改变数组大小,如果设置的值比当前值大,数组将增大,
    //新的元素被添加到数组的尾部,它们的值为undefined。
    var mArray = new Array("AA");
    mArray.length = 3; //mArray:["AA", undefined, undefined],mArray.length:3
    
    03.删除数组元素
    //使用pop方法删除、并返回数组的最后一个元素
    //语  法:mArray.pop();
    //注  释:删除数组的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。
    //注  释:如果数组已经为空,则pop不改变数组,并返回undefined值。
    var mArray = new Array("AA", "BB");
    var item   = mArray.pop(); //mArray:["AA"],mArray.length:1,item:"BB"
    var item   = mArray.pop(); //mArray:[],mArray.length:0,item:"AA"
    var item   = mArray.pop(); //mArray:[],mArray.length:0,item:undefined 
    
    //使用shift方法删除、并返回数组的第一个元素
    //语  法:mArray.shift()
    //注  释:该方法删除数组的第一个元素,把数组长度减 1,并且返回它删除的元素的值。
    //注  释:如果数组已经为空,则shift不改变数组,并返回undefined 值。
    var mArray = new Array("AA", "BB");
    var item   = mArray.shift(); //mArray:["BB"],mArray.length:1,item:"AA"
    var item   = mArray.shift(); //mArray:[],mArray.length:0,item:"BB"
    var item   = mArray.shift(); //mArray:[],mArray.length:0,item:undefined
    
    //使用splice方法从指定位置开始,删除指定个数的元素
    //语  法:mArray.splice(index,howmany)
    //返回值:含有被删除的元素的数组
    //注  释:如果不指定howmany的值,表明删除包含[index]之内及其以后所有的元素
    var mArray = new Array("AA", "BB", "CC", "DD", "EE");
    var ret    = mArray.splice(1, 2);//mArray:["AA", "DD", "EE"],ret:["BB", "CC"]
    var ret    = mArray.splice(1);   //mArray:["AA"],ret:["DD", "EE"]
    
    //使用数组的length属性截断数组
    //设置length属性改变数组大小,如果设置的值比其当前值小,数组将被截断,丢失尾部元素
    var mArray = new Array("AA", "BB", "CC", "DD", "EE");
    mArray.length = 2; //mArray:["AA", "BB"],mArray.length:2
    
    04.数组元素的遍历访问
    var mArray = new Array("AA", "BB", "CC", "DD", "EE");
    
    //使用数字下标来循环输出数组中的元素
    for (var i = 0; i < mArray.length; i++) {
        console.log(mArray[i]);
    }
    
    //使用 For...In 声明来循环输出数组中的元素
    for (var i in mArray) {
        console.log("mArray[" + i.toString() + "] =", mArray[i]);
    }
    
    05.数组操作
    //使用slice截取数组
    //语  法:mStart.slice(start, end)
    //参  数:start	必需,规定从何处开始选取。
    //        如果是负数,那么表明它从数组尾部开始算起的位置。
    //        也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
    //参  数:end 可选。规定从何处结束选取。
    //        该参数是数组片断结束处的数组下标。
    //        如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。
    //        如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
    //返回值:返回一个新数组,包含从start到end(不包括该元素)的mArray中的元素。
    //注  释:该方法并不会修改数组,而是返回一个子数组。
    //注  释:如果end未被规定,该方法会选取从start到数组结尾的所有元素。
    var mArray = new Array("AA", "BB", "CC", "DD", "EE");
    var sArray = mArray.slice(1, 3);
    此时mArray的值为:["AA", "BB", "CC", "DD", "EE"]
    此时sArray的值为:["BB", "CC"]
    
    //使用concat方法接两个或多个数组或者元素
    //语  法:mArray.concat(element_0, element_1, ..., element_n)
    //参  数:element_X 该参数可以是具体的值,也可以是数组对象,可以是任意多个。
    //返回值:返回一个新的数组。
    //注  释:该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
    var mArray = new Array("AA", "BB");
    var sArray = mArray.concat("CC", "DD", ["EE"], ["FF", "GG"], "HH");
    此时mArray的值为:["AA", "BB"]
    此时sArray的值为:["AA", "BB", "CC", "DD", "EE", "FF", "GG", "HH"]
    
    06.数组深拷贝
    //使用slice我们可以构建一个深拷贝的新数组:
    var mArray = new Array("AA", "BB", "CC", "DD", "EE");
    var sArray = mArray.slice(0);
    mArray[0]  = "FF";
    sArray[0]  = "GG";
    此时mArray的值为:["FF", "BB", "CC", "DD", "EE"]
    此时sArray的值为:["GG", "BB", "CC", "DD", "EE"]
    
    //使用concat也可以达到深拷贝的目的:
    var mArray = new Array("AA", "BB", "CC", "DD", "EE");
    var sArray = mArray.concat();
    mArray[0]  = "HH";
    sArray[0]  = "II";
    此时mArray的值为:["HH", "BB", "CC", "DD", "EE"]
    此时sArray的值为:["II", "BB", "CC", "DD", "EE"]
    
    07.数组排序
    //使用reverse方法反转数组中元素的顺序
    //语  法:mArray.reverse()
    //注  释:该方法会改变原来的数组,而不会创建新的数组
    var mArray = new Array("AA", "BB", "CC", "DD", "EE");
    mArray.reverse(); //mArray:["EE", "DD", "CC", "BB", "AA"]
    
    //使用sort方法对数组的元素按给定的排序函数进行排序
    //语  法:mArray.sort(sortby)
    //参  数:sortby 可选。规定排序顺序。必须是函数。
    //返回值:对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
    //注  释:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序。
    //注  释:如果想按照其他标准进行排序,就需要提供比较函数
    //        该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字:
    //        比较函数应该具有两个参数 a 和 b,其返回值规定如下:
    //        若 a 不等 b,如果a需在前就返回小于0的值,反之就返回大于0的值
    //        若 a 等于 b,则返回0
    var mArray = new Array("EE", "CC", "DD", "AA", "BB");
    function sortAscending(a, b) {
        //该函数的作用使得数组中的元素按递增的顺序排序
        return (a > b)?1:-1;
    }
    mArray.sort(sortAscending); //mArray:["AA", "BB", "CC", "DD", "EE"]
    
    var mArray = new Array("EE", "CC", "DD", "AA", "BB");
    function sortDecreasing(a, b) {
        //该函数的作用使得数组中的元素按递减的顺序排序
        return (a > b)?-1:1;
    }
    mArray.sort(sortDecreasing); //mArray:["EE", "DD", "CC", "BB", "AA"]
    
    08.数组其他方法
    //使用join方法把数组中的所有元素放入一个字符串
    //语  法:mArray.join(separator)
    //参  数:separator 可选,指定要使用的分隔符。
    //        如果省略该参数,则使用逗号作为分隔符。
    //返回值:返回一个字符串。
    //        该字符串是通过将数组中每个元素转换为字符串,
    //        如果是复杂类型,调用相应的toString函数,
    //        然后把这些字符串连接起来,在两个元素之间插入separator字符串而生成的。
    简单类型示例:
    var mArray = new Array("AA", "BB", "CC", "DD", "EE");
    var str    = mArray.join("#");   //str:"AA#BB#CC#DD#EE"
    
    复杂类型示例:
    function testItem(a, b) {
        this.a = a;
        this.b = b;
    }
    testItem.prototype.toString = function () {
        return "{" + this.a + "|" + this.b + "}";
    }
    
    var aa = new testItem("AA", "BB");
    var bb = new testItem("CC", "DD");
    
    var mArray = new Array(aa, bb, "EE", "FF");
    var str = mArray.join("#"); //str:"{AA|BB}#{CC|DD}#EE#FF"
    
    09.对使用数组的辅助说明
    //当作为函数参数传递时,作为引用参数
    var mArray = new Array("AA", "BB");
    function demoFunc(arr) {
        //arr作为传入的数组类型,函数内直接对原数组操作
        arr.push("CC", "DD", "EE");
    }
    demoFunc(mArray); //mArray:["AA", "BB", "CC", "DD", "EE"]
    
    参考文档
    1.http://www.w3school.com.cn/js/js_obj_array.asp
    2.http://www.w3school.com.cn/jsref/jsref_obj_array.asp
  • 相关阅读:
    【应试】数据通信与网络
    【应试】操作系统OS
    【笔记】 卷积
    【HDU 5920】 Ugly Problem
    【笔记】位运算
    【洛谷P1378】油滴扩展
    【洛谷 P1120】 小木棍[数据加强版]
    [codeforces]Round #538 (Div. 2) F. Please, another Queries on Array?
    [BZOJ]2563: 阿狸和桃子的游戏
    [BZOJ]4668: 冷战
  • 原文地址:https://www.cnblogs.com/motadou/p/1936486.html
Copyright © 2020-2023  润新知