zoukankan      html  css  js  c++  java
  • 转javascript 数组

    较为上篇更为深刻

    原文:http://blog.csdn.net/jaylongli/archive/2009/03/20/4007823.aspx

    数组有四种定义的方式
    使用构造函数:
    var a = new Array();
    var b = new Array(8);
    var c = new Array("first", "second", "third");
    或者数组直接量:
    var d = ["first", "second", "third"];

    属性

    Array只有一个属性,就是length,length表示的是数组所占内存空间的数目,而不仅仅是数组中元素的个数,在刚才定义的数组中,b.length的值为8

    <script>
    var a = new Array("first", "second", "third")
    a[
    48] = "12"
    document.write(a.length)
    //显示的结果是49
    </script>
    数组的length属性是可写的,这是一个非常有意思的属性,我们可以通过这种方法来截取数组

    <script>
    var a = new Array("first", "second", "third")
    delete a[1]
    document.write(a.length)
    //显示的结果是3,说明即使删除也无法改变数组的长度
    var a = new Array("first", "second", "third")
    a.length
    = 1
    document.write(a.length)
    //显示的结果是1,说明只剩下一个元素了
    </script>
    方法

    这里并没有包括IE和FF并不兼容的一些方法:
    toString():把数组转换成一个字符串
    toLocaleString():把数组转换成一个字符串
    join():把数组转换成一个用符号连接的字符串
    shift():将数组头部的一个元素移出
    unshift():在数组的头部插入一个元素
    pop():从数组尾部删除一个元素
    push():把一个元素添加到数组的尾部
    concat():给数组添加元素
    slice():返回数组的部分
    reverse():将数组反向排序
    sort():对数组进行排序操作
    splice():插入、删除或者替换一个数组元素

    toString() 方法,toLocaleString()方法的作用类似,FF下的作用是完全相同的,IE的话如果元素是字符串,会在“,”后面加上一个空格,如果元素是 数字,会扩展到两位小数,两者都会改变字符串的length属性,所以考虑到兼容性,尽量不要使用toLocaleString()方法。

    <script>
    var a = new Array(1, 2, 3, [4, 5, [6, 7]])
    var b = a.toString() //b为字符串形式的 "1, 2, 3, 4, 5, 6, 7"
    var c = new Array(1, 2, 3, [4, 5, [6, 7]])
    var d = c.toLocaleString() //d为字符串形式的 "1, 2, 3, 4, 5, 6, 7"
    //
    toString()方法和toLocaleString()方法都可以拆解多维数组
    </script>
    join()方法将数组中的所有元素转换成字符串,然后连接起来,这刚好和String的split()方法是一个相反的操作。join()默认是使用“,”作为分隔符,当然你也可以在方法中指定分隔符

    <script>
    var a = new Array("first", "second", "third")
    var s = a.join("...")
    document.write(s)
    //显示的结果是“first...second...third”
    </script>
    pop()方法可以从数组尾部删除若干个元素,push()方法把一个元素添加到数组的尾部,这两个方法刚好是两个相反的操作。两个都是对原来的数组进行操作,但是要注意push()方法返回的是新的数组的长度,而pop()方法则返回被删去的那个元素。

    <script>
    var a = new Array(1, 2, 3)
    var b = a.push(4,5,[6,7]) //a为[1, 2, 3, 4, 5, [6, 7]] b为6 注意push()方法不会帮你打开一个数组
    var c = new Array(1, 2, 3, 4, "first")
    var d = c.pop() //c为[1, 2, 3, 4] d为字符串形式的"first"
    </script>
    shift() 方法可以从数组头部删除一个元素,unshift()方法把若干元素添加到数组的头部,这两个方法刚好是两个相反的操作。两个都是对原来的数组进行操作, 但是要注意unshift()方法返回的是新的数组的长度,而shift()方法则返回被删去的那个元素。

    <script>
    var a = new Array(1, 2, 3)
    var b = a.unshift(4,5,[6,7]) //a为[4, 5, [6, 7], 1, 2, 3] b为6 注意unshift()方法不会帮你打开一个数组,还有就是被插入数值的顺序
    var c = new Array("first", 1, 2, 3, 4)
    var d = c.shift() //c为[1, 2, 3, 4] d为字符串形式的"first"
    </script>
    concat()方法可以返回一个在原有数组上增添了元素的数组,元素用“,”分隔,元素中如果有数组,将被展开并继续添加,但不支持多维数组形式的展开添加

    <script>
    var a = new Array("first", "second", "third")
    s
    = a.concat("fourth",["fifth", "sixth"],["seventh", ["eighth", "ninth"]])
    document.write(s[
    7])
    // 显示的结果是“eighth, ninth”,说明“eighth, ninth”是以数组的形式被添加了进去,此是s的值为["first", "second", "third", "fourth", "fifth", "sixth", "seventh", ["eighth", "ninth"]]
    </script>
    slice()方法返回数组的一个片断,或者说是子数组。slice()的参数表示字数组的始末位置,如果只有一个参数,就表示从该处开始一直取到最后,如果参数出现负数,则表示倒数的某个位置。

    <script>
    var a = new Array(1, 2, 3, 4, 5)
    var b = a.slice(3) //b为[4, 5]
    var c = a.slice(-3) //c为[3, 4, 5]
    var d = a.slice(1,-1) //d为[2, 3, 4]
    var e = a.slice(-3,-1) //e为[3, 4]
    </script>
    reverse()方法将数组反向排序,他并不创建和返回一个新的数组,而是在原有的数组上进行操作

    <script>
    var a = new Array("first", "second", "third")
    a.reverse()
    document.write(a)
    //显示的结果是“third,second,first”,这时候数组的顺序已经颠倒了
    </script>
    sort()方法的作用是对数组进行排序,这是一个非常奇特的方法,我不知道当初创作他的人是出于懒惰还是聪明,这是一个让我印象深刻的方法。
    sort()方法的参数是一个有两个参数,并且有返回值的函数,如果返回的值大于零,则说明前一个参数比后一个参数大,等于零则相等,小于零说明前一个参数比后一个小,而相对小的那个参数将出现在排序的前列。
    sort()方法直接在数组上进行操作,同时也返回值,但是两者似乎是等价的。sort()方法默认是用字母的顺序进行排序

    <script>
    var a = new Array(33, 4, 111, 543)
    a.sort(way)
    function way(x, y){
    if (x % 2 ==0)
    return 1;
    if (x % 2 !=0)
    return -1;
    }
    //排序的结果是使奇数在前偶数在后
    </script>
    splice()方法的作用是插入、删除或者替换一个数组元素,他不光会在原有的数组上进行修改,还会返回被处理掉的内容,因此这是一个功能强大,但是不容易使用的方法,splice()方法用前两个参数进行定位,余下的参数表示插入部分。

    <script>
    var a = new Array(1, 2, 3, 4, 5)
    var b = a.splice(2) //a为[1, 2] b为[3, 4, 5]
    var c = new Array(1, 2, 3, 4, 5)
    var d = c.splice(2,2) //c为[1, 2, 5] d为[3, 4]
    var e = new Array(1, 2, 3, 4, 5)
    var f = f.splice(-4,2) //e为[1, 4, 5] f为[2, 3]
    var g = new Array(1, 2, 3, 4, 5)
    var h = g.splice(-2,-2) //第二个参数表示长度,因此负数在此无效

    var i = new Array(1, 2, 3, 4, 5)
    var j = i.splice(2,2,"first","second","third") //i为[1, 2, "first", "second", "third", 5] j为[3, 4] 后面部分会自动前后移动,以保持数组的连续性
    var k = new Array(1, 2, 3, 4, 5)
    var l = k.splice(2,2,["first","second"],"third") //k为[1, 2, ["first", "second"], "third", 5] l为[3, 4] splice()方法不会展开数组,只直接写入
    </script>
  • 相关阅读:
    使用MobaXterm远程连接Ubuntu,启动Octave,界面不能正常显示
    ABP .Net Core 日志组件集成使用NLog
    ABP .Net Core Entity Framework迁移使用MySql数据库
    ABP前端使用阿里云angular2 UI框架NG-ZORRO分享
    阿里云 Angular 2 UI框架 NG-ZORRO介绍
    Visual Studio 2019 Window Form 本地打包发布猫腻
    VS Code + NWJS(Node-Webkit)0.14.7 + SQLite3 + Angular6 构建跨平台桌面应用
    ABP .Net Core 调用异步方法抛异常A second operation started on this context before a previous asynchronous operation completed
    ABP .Net Core To Json序列化配置
    .Net EF Core数据库使用SQL server 2008 R2分页报错How to avoid the “Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.”
  • 原文地址:https://www.cnblogs.com/jikey/p/1621865.html
Copyright © 2011-2022 走看看