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

    一、数组的创建

    构造函数

    1、var a=new Array();

    无参构造函数,创建一个空数组。

    2、var a=new Array(5);

    一个数字参数构造函数,指定数组的长度(由于数组长度可以动态调整,作用不大),创建指定长度的数组。

    3、var a=new Array(5,"hello");  

    带有初始化数据的构造函数,创建数组并初始化参数数据。

    字面量

    1、var a=[];

    使用方括号,创建空数组。

    2、var a=[1,2,"hello"];

    使用方括号,并传入初始化数据。

    注意点:

    在使用构造函数创建数组时如果传入一个数字参数,则会创建一个长度为参数的数组,如果传入多个,则会创建一个数组,参数作为初始化数据加到数组中。

    var a=new Array(5);
    console.log(a.length);   //5    数组是空的
    var b=new Array(5,6);
    console.log(b.length);   //2

    使用字面量,则无论传入几个参数,都会把他当做初始化内容。

    var a=[5];
    console.log(a.length);  //1

    二、操作

    1、length 

    计算数组的长度

    var a=["aaa","bbb"];
    alert(a.length)    //2

    2、索引

    通过索引获取相应值,同时也可以改变索引对应的值。

    var a=["aaa","bbb","ccc"];
    alert(a[1]);   //bbb
    a[1]="ddd";
    alert(a[1]); //ddd

    3、indexOf 

    返回指定元素的位置,若不存在则返回-1

    var a=["aaa","bbb","ccc"];
    alert(a.indexOf("ccc"));   //2
    alert(a.indexOf("ddd"));   //-1

    4、slice

    接收一个或两个参数,参数对应的是要返回项的起始位置和结束位置,若只有一个参数,该方法返回数组的指定位置到末尾期间的所有项,如果有两个参数,返回从起始位置到结束位置期间的所有项,但是不包括结束位置那一个项,返回的是一个新的数组,不影响原数组。

    var a=["aaa","bbb","ccc"];
    var b=a.slice(1);   
    console.log(b);   ["bbb","ccc"];
    var c=a.slice(0,2);   
    console.log(c);   ["aaa","bbb"];

    5、push

    向数组末尾添加若干项,返回的是添加完成后数组的长度(length);

    var a=["aaa"];
    var b=a.push("bbb","ccc");
    console.log(a);  //["aaa","bbb","ccc"];
    console.log(b);  //3

    6、unshift

    向数组头部添加若干项,返回的是添加完成后数组的长度。

    var a=["aaa","bbb"];
    var b=a.unshift("ccc");
    console.log(a); //["ccc","aaa","bbb"]
    console.log(b);   //3

    7、pop

    删除数组最后一个元素,返回被删除的元素。

    var a=["aaa","bbb","ccc"];
    console.log(a.pop()); // ccc
    console.log(a);    //["aaa","bbb"]

    8、shift

    删除数组第一个元素,返回的是被删除的元素。

    var a=["aaa","bbb","ccc"];
    var b=a.shift();
    console.log(a);   //["bbb","ccc"]
    console.log(b);  // aaa

    9、sort

    对数组进行排序,返回排序后的数组,默认把所有元素转化为字符之后再进行排序,排序以后会改变原数组。

    可以定义一个比较函数,来进行数字的排序。

    function bijiao(a,b){
        return a-b;
    }
    var arr=[3,5,1,10,8];
    console.log(arr.sort(bijiao));       //[1, 3, 5, 8, 10]

    10、reverse

    对数组进行反转。

    var a=["aaa","bbb","ccc"];
    a.reverse();
    console.log(a);  //["ccc", "bbb", "aaa"]

    11、splice

    从指定位置删除若干个元素,再从该位置添加若干元素,结果返回被删除的元素,第一个参数表示起始删除的位置,第二个参数表示要删除的个数,之后的元素表示要添加的元素。

    这里参数有三种情况。

    var a=["aaa","bbb","ccc"];
    console.log(a.splice(1));    //   ["aaa"]  只有一个参数,从该位置删除到结束
    
    var a=["aaa","bbb","ccc"];
    console.log(a.splice(0,1));  //["bbb","ccc"] 有两个参数,从该位置删除到指定位置
    
    var a=["aaa","bbb","ccc"]; 
    console.log(a.splice(0,2,"ddd"));  //["ddd","ccc"] 有多个参数,第一为删除开始位置,第二为结束位置,后面就是要添加的新元素。

    12、concat

    把当前的数组和另外一个数组链接起来,并返回新的数组,并不影响原来的两个数组。

    var a=["aaa"];
    var b=["bbb"];
    var c=a.concat(b);
    console.log(a);   //["aaa"]
    console.log(b);   //["bbb"]
    console.log(c);   //["aaa","bbb"]

    13、join

    将数组中的元素用指定的字符连接起来,返回字符串。

    var a=["aaa","bbb","ccc"];
    var b=a.join("--");
    console.log(a);  //["aaa","bbb","ccc"]
    console.log(b);  // aaa--bbb--ccc

    14、map

    对数组中的每一项运行函数,返回函数运行结果组成的数组,函数的参数是一个函数,而该函数接收三个参数:数组当前值,数组索引、数组

    var arr = [1,2,3,-1];
    alert(arr.map(function(x) {
          return x * x;
    }
    ));//返回1,4,9,1

    15、reduce

    从数组的第一项开始,逐个遍历到最后,函数接受两个参数,一个是在数组上调用的函数和归并的初始值(可选),而调用数组的函数接受四个参数:前一个值、当前值、当前值索引、当前数组,第一次调用时,前一个值是数组第一项,当前值是数组第二项

    var arr = [1,2,3,-1];
    var result = arr.reduce(function(prev,cur,index,array){
         return prev+cur
    })
    alert(result);//5

    16、filter

    对数组中的每一项进行函数,返回该函数返回true的元素组成的新数组

    var a=[1,0,-8,9,5,-2];
    var b=a.filter(function(x){
        if(x<0){
            return true;
        }else{
            return false;
        }
    })
    console.log(b);  //[-8,-2]
  • 相关阅读:
    几款免费的支持HTML5的音频视频转换软件推荐
    2 宽度优先爬虫和带偏好的爬虫(4)
    Hadoop源代码分析(三)
    Hadoop源代码分析(四)
    C# 收邮件
    关于Adobe flash palyer 安装出现的问题解决方案
    C#调用java类、jar包方法。
    EF 4.3 的一些基础使用
    .net数据库连接池问题:在同一页面使用一段时间后,提示超时,连接池不够用这类的提示!
    使用Google CDN的JSAPI服务来提供加载各类JS库的方法
  • 原文地址:https://www.cnblogs.com/xlj-code/p/6282677.html
Copyright © 2011-2022 走看看