Javascript查漏补缺-数组

作者: 前端路上的菜鸟 | 来源:发表于2017-02-28 18:12 被阅读0次

    最近搜寻资料时候发现了几张js知识导图,闲来无事就当温习了一下


    一、创建方法

    这几个使用的是Array构造函数
    空数组: var obj = new Array();
    指定长度的数组:var obj = new Array(20);
    指定元素的数组:var obj = new Array("red","blue","black");
    另一种是使用数组字面量表示法:
    三个字符串的数组:var obj = ["red","blue","green"];
    空数组:var name = [];

    二、基本操作

    存取数组元素:
    1)、单维数组:数组名[下标所索引] =》 obj[2];
    2)、多维数组:数组名[外层数组下标][内层数组下标] =》obj[2][3]
    增加数组:使用“【】”运算符指定一个新下标 =》 obj[3] = "yellow"
    删除数组:delete数组名[下标] =》 delete obj[3];(删除之后原来元素会变成undefined)
    遍历数组:for(var 数组元素变量in数组)

    三、数组属性

    引用数组对象的构造函数:constructor
    数组的长度:length
    通过增加属性和方法扩展数组定义:prototype

    四、方法

    1)、添加
    push():在数组末尾添加数组 =》 arr.push("yellow","pupple")
    unshift():在数组头部添加元素 =》 arr.unshift("green")
    concat():合并两个数组 =》 arr1.concat(arr2)

    2)、删除
    pop():删除并返回数组的最后一个元素 =》 arr.pop()
    shift():删除并返回数组的第一个元素 => arr.shift()

    3)、子数组
    splice(): 注意:此方法会直接修改数组本身!
    PS:该方法可接受三个参数:
    index(必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。)
    howmany(必需。要删除的项目数量。如果设置为 0,则不会删除项目。)
    item1, ..., itemX( 可选。向数组添加的新项目)

    删除任意数量的项:(要删除的起始下标,要删除的项数)=》arr.splice(1,2)
    表从第一个开始,删除两个元素,包括第一个

    在指定位置插入指定项:(起始下标,0[不删除任何元素],要插入的项) =》arr.splice(2,0,"yellow","red")
    表示在索引为2的地方插入后面两个元素

    替换任意数量的项:(起始下标,要删除的项数,要插入的项)=》arr.splice(0,2,"6")
    表示从索引为0的开始,选取两个元素,替换成后面的元素

    slice(): 注意:此方法不会修改数组本身!
    从已有数组中选取部分元素构成新数组
    PS:该方法可接受两个参数:
    start(必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。)
    end(可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从start到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。)
    =》arr.slice(0,2)
    表示从索引0开始,取两个元素,注意包含第0个元素但不包含第2个元素

    4)、数组排序
    reverse()
    颠倒数组元素的顺序=》arr.reverse()

    sort()
    排序数组,默认的话,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
    比较数字的话如下:

    <script type="text/javascript">
    function sortNumber(a,b)
    {
        return a - b
    }
    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>
    

    5)、数组转换
    toString() 转换为字符串并返回
    toLocaleString转换为本地格式字符串并返回
    join()用指定分隔符分割数组并转换为字符串

    6)、位置方法
    indexOf && lastIndexOf
    一个从数组的起始位置开始查找,一个从数组的结束位置开始查找
    接受两个参数:

    • 要查找的项
    • 表示查找起点的索引位置
      =》[2,3,4,5].indexOf(2)
      如果查找得到则返回该元素的索引,找不到返回-1

    7)、迭代方法
    every
    该方法用于检测数组所有元素是否都符合条件(通过函数提供)

    • 如果数组中检测到有一个元素不满足,则整个表达式都返回false,并且剩余的元素不会检测
    • 如果所有元素都满足条件,则返回true
      例子:
    var ages = [32,33,16,40]
    function checkAdult(age){
        return age >= 18;
    }
    ages.every(checkAdult) //false
    

    filter
    对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,该数组元素是所有回调函数执行时返回值为 true 的原数组元素。

    //过滤掉小于 10 的数组元素:
    
    //代码:
    function isBigEnough(element, index, array) {
        return (element >= 10);
    }
    var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
    // 12, 130, 44
    //结果:[12, 5, 8, 130, 44].filter(isBigEnough) : 12, 130, 44 
    

    foreach
    遍历

    //打印数组内容:
    
    function printElt(element, index, array) {
        document.writeln("[" + index + "] is " + element + "<br />");
    }
    [2, 5, 9].forEach(printElt);
    // Prints:
    // [0] is 2
    // [1] is 5
    // [2] is 9
    //结果:
    //[0] is 2
    //[1] is 5
    //[2] is 9
    

    map
    返回每次函数调用的结果数组

    //将所有的数组元素转换为大写:
    
    var strings = ["hello", "Array", "WORLD"];
    function makeUpperCase(v)
    {
        return v.toUpperCase();
    }
    var uppers = strings.map(makeUpperCase);
    // uppers is now ["HELLO", "ARRAY", "WORLD"]
    // strings is unchanged
    //结果:["hello", "Array", "WORLD"].map(makeUpperCase) : HELLO, ARRAY, WORLD 
    

    some
    有一项返回true,则返回true

    //检查是否有数组元素大于等于10:
    
    function isBigEnough(element, index, array) {
        return (element >= 10);
    }
    var passed = [2, 5, 8, 1, 4].some(isBigEnough);
    // passed is false
    passed = [12, 5, 8, 1, 4].some(isBigEnough);
    // passed is true
    //结果:
    //[2, 5, 8, 1, 4].some(isBigEnough) : false 
    //[12, 5, 8, 1, 4].some(isBigEnough) : true 
    

    8)、缩小方法
    reduce 从数组起始位开始遍历
    reduceRight 从数组末尾开始遍历
    常见场景叠加

    var sum = [0, 1, 2, 3].reduce(function(acc, val) {
      return acc + val;
    }, 0);
    // sum is 6
    

    相关文章

      网友评论

        本文标题:Javascript查漏补缺-数组

        本文链接:https://www.haomeiwen.com/subject/cyxfgttx.html