• 引用类型


    创建方式

    var arr = new Array();
    

    或者直接等于一个方括号

    var arr = [];
    

    length属性

    它不是只读,可以通过设置这个属性为数组添加新项。

    var colors = ["bule","a","b"];
    colors[colors.length] = "c";
    

    向数组末端添加了一个新项“c”

    指定位置添加会改变长度

    var colors = ["bule","a","b"];
    colors[99] = "c";
    alert(colors.length)//100
    

    检测数组

    instanceof

    对于一个网页或者是一个全局作用域,可以用instanceof操作符

    if (value instanceof Array) {
        //对数组执行某些操作
    }
    

    但它假定只有一个全局环境,所以如果网页中用多个框架,就不适用了。

    isArray

    ES5新增了Array.isArray()方法来判断某个值是不是数组

    转换方法

    toString()

    toString()会放回数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。

    valueOf()

    返回的还是数组

    var arr = ["a"."s"."d"];
    alert(arr.toString());//a,s,d
    alert(arr.valueOf());//a,s,d
    

    由于alert()要接收字符串参数,所以它会在后台调用toString()方法,由此会得到与直接调用toString()相同的结果。

    对于toString和toLocaleString的区别在data中在介绍。

    join

    join方法可以用不同的符号来分隔字符串。

    var arr = ["a","b","c"];
    alert(arr.join(","));//a,b,c
    alert(arr.join("||"));//a||b||c
    

    如果不给join传递任何值,或者给它传入undefined则会用逗号作为分隔符。

    关于Array栈和队列的方法我在了解数组中的队列方法,DOM中节点的一些操作中已经讲了,如果有兴趣,请点击查看。

    栈方法

    一种先进先出的数据结构

    • push() 向栈中添加数据
    • pop() 移除栈中的最后一个数据

    队列方法

    一种后进先出的数据结构

    • push() 向数据末端插入数据
    • shift() 获得并移除第一项
    • unshift() 在数组前端添加任意个项并返回新的数组长度
    var arr = [1,2];
    arr.shift();
    arr.push(4,5);
    arr.unsift(2,3);
    console.log(arr)//2,3,2,4,5
    

    重排序方法

    reverse()

    此方法用来反转数组项的顺序

    var arr = [1,2,3,5,4]
    arr.reverse();
    console.log(arr)//4,5,3,2,1
    
    
    sort()

    sort()方法按升序排列数组项。sort()方法会调用每个数组项的toString()方法,所以比较的是字符串。如果要比较数字的大小需要调用下面这个函数

    function compare(a,b) {
        if(a<b) {return -1;}
        else if(a>b) {return 1;}
        else {return 0;}
    }
    var arr = [0,2,6,5,3];
    arr.sort(compare);
    console.log(arr)//0,2,6,5,3
    

    如果想产生降序的效果,只需要讲返回值交换一下。

    或者比较函数可以写得更简单一些

    function compare(a,b) {
        return a-b;
    }
    

    操作方法

    Concat()

    可以基于当前数组创建一个或多个数组,若传递的不是数组,则直接加在原数组后面。

    var arr = ["a","b","c"];
    var arr1 = arr.concat("d",["e",“f”]);
    console.log(arr)//a,b,c
    console.log(arr1)//a,b,c,d,e,f
    //注意这里返回的不是a,b,c,d,[e,f](鄙视考点)
    
    slice()

    它能够基于当前数组中的一个或多个项创建一个新数组。
    接收两个参数,第一个参数表示从第几位开始,第二个参数表示在第几位结束。如果没有第二个参数,则表示到数组末尾结束

    var arr = ["a","b","c","d"];
    var arr2 = arr.silce(1,2);
    var arr3 = arr.silce(1);
    conole.log(arr2)//b,c
    console.log(arr3)//b,c,d
    
    

    splice()

    在javascript中splice()方法有如下3种方式:

    删除——可以删除任意数量的项,只需要指定2个参数:要删除的第一项的位置和要删除项的项数。

    例如,splice(0,2)会删除数组中的前两项。

    插入——可以向指定位置插入任意数量的项,只需要提供3个参数:插入起始位置、0(要删除的项数)和要插入的项。 如果要插入多个项,可以再传入第四、第五,一直任意多个项。

    例如,splice(2,0,”red”,”green”)会从位置2开始插入字符串“red”和”green”。

    替换——即删除和插入数量相等项数的综合应用,可以指向指定位置插入任意数量的项,且同时删除任意数量的项,只需要指定3个指定参数:起始位置、要删除的项数和要插入的任意数量项。 插入的项数是不必与删除的项数相等。

    例如,splice(2,2,”red”,”green”)会删除当前数组位置2的项,然后再从位置2开始插入字符串“red”和“green”。

    splice()方法始终都会返回一个数组,该数组中包含从元素数组中删除的项(如果没有删除任何项,则返回一个空数组)。

    例子,使用splice方法的方式:

    <script>
    var colors = ["red", "green", "blue"];
    var removed = colors.splice(0,1);  //删除第一项
    alert(colors);  //green,blue
    alert(removed);  //red,返回数组中值包含一项
    
    removed = colors.splice(1, 0, "yellow", "orange");  //从位置1开始插入两项
    alert(colors);  //green,yellow,organge,blue
    alert(removed);  //返回的是一个空数组
    
    removed = colors.splice(1, 1, "red", "purple");  //插入两项,删除一项
    alert(colors);  //green,red,purple,orange,blue
    alert(remove);  //yellow, 返回的数组中只包含一项
    </script>
    

    位置方法

    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

    lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。

    语法

    stringObject.indexOf(searchvalue,fromindex)
    stringObject.lastIndexOf(searchvalue,fromindex)
    

    迭代方法

    every和some

    Every()每一项都符合给定项返回ture,否则返回false;

    Some()有一项符合给定项就返回ture,否则返回false

    filter()

    filter()方法:对没一项运行给定函数,返回该函数会返回ture的项组成的数组

    map()

    map()方法:返回在原始数组中的对应项上运行函数的结果

    归并方法

    reduce从数组的第一项开始,逐个遍历到最后;reduceRight()从最后一项开始遍历到第一项

    使用reduce或reduceRight取决于从哪端开始遍历,除此之外完全一样

  • 相关阅读:
    Ural 1099 Work Scheduling (一般图的最大匹配:带花树算法)
    HDU 4687 Boke and Tsukkomi (2013.8.20 多校9 1002)(暴力+带花树算法)
    2013 Multi-University Training Contest 9 小结(2013.8.20)
    TeX代码模板(持续更新中)
    POJ 3177 Redundant Paths
    POJ 1904 King's Quest
    hdu 4685 Prince and Princess (2013.8.15 多校8---1010)
    2-SAT模板(修改自LRJ的模板)
    HDU 3622 Bomb Game
    Ubuntu 压缩命令
  • 原文地址:https://www.cnblogs.com/huyuzhu/p/6636635.html
Copyright © 2020-2023  润新知