zoukankan      html  css  js  c++  java
  • js数组操作总结

    1.定义

    有三种方式

    (1)  var myCars=new Array();

      myCars[0]="Saab";

      myCars[1]="Volvo";

      myCars[2]="BMW";

    (2)  var myCars=new Array(3);

      myCars[0]="Saab";

      myCars[1]="Volvo";

      myCars[2]="BMW";

    (3) var myCars=new Array("Saab","Volvo","BMW");

    (虽然第二种方法指定了数组长度,实际上所有情况下数组都是变长的,也就是说即使指定了长度为3,仍可以将元素存储在规定长度以外)

    2.查找

    (1) document.write(myCars[0]); //指定数组名以及索引

    (2) arrayObject.slice(start,end);  //从已有数组中返回选定的元素,返回一个新数组(可以使用负值从数组的尾部选取元素;如果end未被指定,会选取从start到数组结尾的所有元素)

    3.修改已有数组中的值

    myCars[0]="Opel"; //指定下标添加一个新值

    4.合并

    arr1.concat(arr2);  //concat() 连接两个或多个数组,并返回值

    5.转成字符串

    (1) arrayObject.join(separator);  //把数组的所有元素放入一个字符串,元素通过指定的分隔符进行分隔。

    eg:arr.join(".");

    输出结果:Saab.Volvo.BMW

    (2) arrayObject.toString();  //数组转为字符串,元素之间用逗号分隔,并返回结果

    (3) arrayObject.toLocaleString();   //把数组元素转换为本地字符串,然后使用地区特定的分隔符连接起来,形成一个字符串

    (4) arrayObject.valueOf(); //返回数组对象的原始值,该原始值由Array对象派生的所有对象继承。该方法通常由JavaScript在后台自动调用,并不显式地出现在代码中。

    (5) object.toSource();  //返回对象的源代码,该原始值由Array对象派生的所有对象继承。该方法通常由JavaScript在后台自动调用,并不显式地出现在代码中。(只有Gecko核心浏览器比如Firefox支持该方法,IE、Safari、Chrome、Opera等浏览器均不支持该方法)

    6.排序

    (1) arrayObject.sort(sortby);  //sortby为可选,规定排序顺序,必须是函数(在原数组上进行排序,不生成副本)

    1>文字排序

    <script type="text/javascript">
    var arr = new Array(6)
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    arr[3] = "James"
    arr[4] = "Adrew"
    arr[5] = "Martin"
    document.write(arr + "<br />")
    document.write(arr.sort())
    </script>

    输出结果:

    George,John,Thomas,James,Adrew,Martin
    Adrew,George,James,John,Martin,Thomas

    2>数字排序

    <script type="text/javascript">
    function sortNumber(a, b)
    {//排序函数
    return a - b    //<0,返回一个小于0的值;=0,返回0;>0,返回一个大于0的值
    }
    var arr = new Array(6)
    arr[0] = "10"
    arr[1] = "5"
    arr[2] = "40"
    arr[3] = "25"
    arr[4] = "1000"
    arr[5] = "1"
    document.write(arr + "<br />")
    document.write(arr.sort(sortNumber))
    </script>

    输出结果:

    10,5,40,25,1000,1
    1,5,10,25,40,1000

    (2) arrayObject.reverse();  //颠倒数组中元素的顺序(不会创建新数组)

    7.添加

    (1) arrayObject.push(newelement1,newelement2,....,newelementX);   //将指定的一个或多个元素添加到数组结尾,并返回数组新长度(它直接修改arrayObject,而不是创建一个新的数组)

    (2) arrayObject.unshift(newelement1,newelement2,....,newelementX); //向数组的开头添加一个或多个元素,并返回新的长度(unshift()不创建新的数组,直接修改原有的数组,该方法无法在IE中正确地工作!

    (3) arrayObject.splice(index,howmany,item1,....,itemX);   //删除从index处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素,返回含有被删除元素的数组(该方法会该改变原始数组;howmany如果设置为0,就不会删除项目)

    8.删除

    (1) arrayObject.pop();   //删除并返回最后一个元素,数组长度减1.如果数组已经为空,则pop()不改变数组,并返回undefined值。

    (2) arrayObject.shift();   //删除并返回数组的第一个元素,如果数组是空,shift()不进行任何操作,返回undefined值。(该方法不创建新数组)

    (3) arrayObject.splice(deletePos,deleteCount);    //从指定位置开始删除指定元素,并返回所有删除的元素

    9.判断数组中是否包含某一项

    eg: var arr=[1,2,3];

      arr.indexOf(1);   //存在,返回0

      arr.indexOf(5);   //不存在,返回-1

    10.删除数组中指定值的元素

      /* 方法:Array.remove(dx)
       * 功能:删除数组元素.
       * 参数:dx删除元素的下标.
       * 返回:在原数组上修改数组
       */
    
    //经常用的是通过遍历,重构数组.
    Array.prototype.remove=function(dx)
    {
        if(isNaN(dx)||dx>this.length){return false;}
        for(var i=0,n=0;i<this.length;i++)
        {
            if(this[i]!=this[dx])
            {
                this[n++]=this[i]
            }
        }
        this.length-=1
    }
    
    //在数组中获取指定值的元素索引
    Array.prototype.getIndexByValue= function(value)
    {
        var index = -1;
        for (var i = 0; i < this.length; i++)
        {
            if (this[i] == value)
            {
                index = i;
                break;
            }
        }
        return index;
    }
    
    //使用举例
    a = ['1','2','3','4','5'];
    var dx=a.getIndexByValue("2");
    a.remove(dx); //删除下标为dx的元素

    11.length属性

    与其他大多数语言不同,Javascript数组的length属性是可变的。当length属性设置的比原来更大时,整个数组的状态事实上不会发生改变,仅仅是length属性变大;当length属性设置的比原来小时,原先数组中索引大于或等于length的元素的值全部丢失。

    <script type="text/javascript">

    var arr = new Array(3)
    arr[0] = "John"
    arr[1] = "Andy"
    arr[2] = "Wendy"

    document.write("Original length: " + arr.length)
    document.write("<br />")

    arr.length=5
    document.write("New length: " + arr.length)
    document.write("<br />")
    arr[15]="Jooanna.Yan"
    document.write("last length: " + arr.length)
    </script>

    输出结果:

    Original length: 3
    New length: 5
    last length: 16

    12.prototype属性

    object.prototype.name=value

    使你有能力向对象添加属性和方法

    <script type="text/javascript">
    
    function employee(name,job,born)
    {
    this.name=name;
    this.job=job;
    this.born=born;
    }
    
    var bill=new employee("Bill Gates","Engineer",1985);
    
    employee.prototype.salary=null;
    bill.salary=20000;
    
    document.write(bill.salary);
    
    </script>

    对于数组对象的应用,举例:给数组对象添加返回数组中最大元素值的方法。

    <script type="text/javascript">
    function array_max( )
    {
       var i, max = this[0];
       for (i = 1; i < this.length; i++)
       {
       if (max < this[i])
       max = this[i];
       }
       return max;
    }
    
    Array.prototype.max = array_max;
    var x = new Array(1, 2, 3, 4, 5, 6);
    var y = x.max();
    document.write(y);
    </script>

    13.constructor属性

    object.constructor

    返回创建对象的函数。

    示例1:

    <script type="text/javascript">
    
    var test=new Array();
    
    if (test.constructor==Array)
    {
    document.write("This is an Array");
    }
    if (test.constructor==Boolean)
    {
    document.write("This is a Boolean");
    }
    if (test.constructor==Date)
    {
    document.write("This is a Date");
    }
    if (test.constructor==String)
    {
    document.write("This is a String");
    }
    
    </script>

    输出结果:

    This is an Array

    示例2:

    <script type="text/javascript">
    
    function employee(name,job,born)
    {
    this.name=name;
    this.job=job;
    this.born=born;
    }
    
    var bill=new employee("Bill Gates","Engineer",1985);
    
    document.write(bill.constructor);
    
    </script>

    输出结果:

    function employee(name, jobtitle, born)
    {this.name = name; this.jobtitle = job; this.born = born;}

    示例3:

    constructor属性保存了对构造特定对象实例的韩式的引用

    eg:   x=new String("Hi");

       if(x.constructor==String)   //进行处理(条件为真)

    function MyFunc{

      //函数体

    }y=new MyFunc;

    if(y.constructor==MyFunc)   //进行处理(条件为真)

  • 相关阅读:
    linux下tomcat 重启和查看日志
    js 下载文件 不直接打开的方法
    linux 安装jdk1.7
    linux下安装nginx
    mysql5.6安装
    微信小程序js倒计时功能
    Ajax 页面跳转例子
    购买阿里云免费https证书,配置tomcat实现https加密访问
    Ajax 实现数组传递(Java)
    mysql 游标实例一
  • 原文地址:https://www.cnblogs.com/Joanna-Yan/p/4896851.html
Copyright © 2011-2022 走看看