zoukankan      html  css  js  c++  java
  • JavaScript中的Array

    Array类型是ECMAScript 用的最多的类型了,ECMAScript中的数组每一项可以保存任何类型的数据,也就是说,数组的第一个项保存字符串,用第二个保存数值,用第三个位置来保存对象。二千数据的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据。
        1.创建数组数组的方式分为两种:
            1.1使用 nwe 的方式
              var colors=new Array();
             1.2.使用Array构造函数省略new操作符
                   var colors=Array(3);      //创建一个包含3项的数组
                   var names=Array("Greg");   //创建一个包含1项,即字符串“Greg”的数组


            2.使用字面量的方式来创建
            var colors=["red","blue","green"];       //创建一个包含3个字符串的数组
            var names=[];                            //创建一个空数组

      2获取和设置数组的值,试用方括号,如下所示:
           var colors=["red","blue","green"];       //定义一个字符串的数组、
           alert(colors[0]);                      //取到第一项,并显示,索引是从0开始的,所以是red
           colors[2]="black";                    // 修改第三项
           colors[3]="brown" ;                   //新增一个项

      3.数组的项数保存在其length属性中,这个属性始终返回0或者更大的值。
             var colors=["red","blue","green"];
             alert(colors.length);     //显示的是3
             var names=[];
             alert(names.length);      //空的数组,长度是0,返回的是0

           注意:数组的length属性不是只读的,因此,通过设置这个属性,可以从数据的末尾移除或项数组中添加新项。如:

                colors.length=4;     //现在数组就多了一个长度,值是undefind

                colors.length=2;    //数组的长度改变成了2个了



     4.检测数组
       使用ECMAScript5 新增的Array.isArray() 这个方法,如:
        if (Array.isArray(value)) {         //value是数组对象
            //对数组进行操作
      }

    5.转换方法
      tostring():把数组转成string
      join(): 使用自定义的分隔符来构建这个这个字符。如:
        var colors=["red","blue","green"];
        var joinStr=colors.join("||");
        alert(joinStr);                        //red||blue||green

    6.栈方法
      Push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。  
      Pop() : 从数组末尾移除最后一项,减少数组的length的值,然后返回移除的项。
      Var colors=new Array();                   //创建一个数组
      Var count=colors.push(“red”,”green”);    //添加两项
      Alert(count);                           //返回2
      Count=colors.push(“black”);             //推入另一项
      Var item=colors.pop();                  //移除最后一项,并返回移除的对象
      Alert(item);                           //所以,是 black
       Alert(item.length);                  //长度以减少了

    7.列队方法
      Shift() : 移除数组中第一项,并返回该项,同时将数组长度减1;
      Var item =colors.shift();     //取得第一项
      Alert(item  );          //取得第一项:red
      Alert(colors.length);            //长度减1
      Unshift(): 在数组前端添加任意个项,并返回添加后的长度。


      Var colors=[“red”,”blue”];
       Var  count=Colors.unshift(“black”);    //添加一个black到这个数组的最前端,并返回长度
      Alert(colors.tostring());        // 现在数组里的项: black ,red,blue


    8.重新排序方法
      Reverse(): 反转数组项的顺序;

    9.操作方法
      Concat(): 可以基于当前数组中的所有项创建一个新数组。
      Var colors=[“red”,”green”,”blue”];
      Var colors2=colosr.concat(“yellow”,[“black”,”brown”]);
      Alert(colors);          //red,green,blue
      Alert(colors2);          //red,green,blue,yellow,black,brown

      Slice():基于当前数组中的一个或多个项创建一个新数组,
      Slice(index,number):index表示开始位置;number表示结束位置,不给默认是到当前数组末尾的所有项。如果结束位置小于开始位置,则返回空数组。
      Splice():向数组中插入项,使用方法 如下:
        删除:可以删除任意数量的项,只需要制定2个参数: 要删除的位置,要删除的项数
       插入:可以向指定位置插入任意数量的项,3个参数:开始位置,0(要删除的数),插入的项
       替换: 可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数:起始位置,要删除的项,要添加的项。

        Var colors=[“red”,”green”,”blue”];
        Var removed=colors.splice(0,1);         //从0开始,删除1项
         Alert(remove);    //red  ,删除的项
        Removed=colors.splice(1,0,”yellow”,”orange”);    //从位置1开始插入两项
        Alert(removed);     //返回一个空数组

        Removed=colors.splice(1,1,”red”,”blue”);
           //从项1开始,删除一项,然后再添加两项,相当于替换,

        Alert(removed);   //yellow  ,返回被替换的项

    10.位置方法
      IndexOf(value,index):   从数组开始位置向后查找,返回其下标
      lastIndexOf(valeu,index): 从数组的末尾开始向前查找。返回其下标
      包含两个参数:value:要查找的项, index:开始找的位置,没有找到就返回-1;

        Var number=[1,2,3,4,5,4,3,2,1];
        Alert(number.indexof(4));    //从开始位置找起,而且没给开始位置,不给是从0开始找起,会一直找,直到找到,返回对应的下标,并返回其下标; 所以返回的是3

        Alert(number.indexOf(4,4));  //这次,给了起始位置,所以会从下标4开始找起,下标4对应的是值 5,5后面就是4了,所以返回是 5:
        Var person={“name”:”a”};
        Var people=[{“name”:”a”}];
        Var morePeople=[person];
        Alert(people.indexOf(person));   //-1
        Alert(morePeople.indexOf(person));   //0



    11.迭代方法
      Every():对数组何总的每一项运行给定函数,如果该函数对每一项都返回true,则返回true;
      Filter();对数组中的每一项运行给定函数,返回这个函数会返回true的项组成的数组。
      ForEach(): 对数组中的每一项运行给定函数,这个方法没有返回值。
      Map(): 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
      Some():对数组中的没一项运行给定函数,如果该函数对任一项返回true,则返回true
      ,以上方法都不会修改数组中包含的值。

        Var number=[1,2,3,4,5,4,3,2,1];
          //item :表示数组具体元素,index:表示下标 ,array:表示当前数组
        Var everyResult=number.every(function(item,index,array){
             Return (item>2);
        });

        Alert(everyResult);  //false

        Var someResult=number.some(function(item.index,array){
           Reutn (item>2);
        });
        Alert(someResult);   //true

      以上代码调用every()和some(),传入的函数只要给定项大于2就会返回true,对于every(),它返回true,因为只有部分数组项符合条件,对于some(),结果就是true,因为至少有一条大于2.


       Var filterResult =.filter(function(item,index,array){
         Reutnr (item>2);
        
      });
      Alert(fileterResult);    //[3,4,5,4,3]
      Var mapResult=number.map(function(item,index,array){
          Return item*2;

      });
      Aelrt(mapResult);   //[2,4,,6,8,10,8,6,4,2]

      number.forEach(function(item,index,array){
          //执行操作
      });


    注意啊: 以上有很多的方法必须要现代浏览器上才用啊,ie9 以前的浏览器都不支持,今天就被坑了。最后用JQURY解决的。
                



  • 相关阅读:
    vue项目接入百度地图
    angularJS 十六进制与字符串相互转换
    angular项目实现mqtt的订阅与发布 ngx-mqtt
    消息中间件MQTT
    Zigbee 与 WiFi 的区别
    angular6 路由拼接查询参数如 ?id=1 并获取url参数
    SpringBoot拦截器
    SpringBoot定时任务
    SpringBoot 各层之间的关系
    百度离线地图 —— 瓦片地图下载
  • 原文地址:https://www.cnblogs.com/Hangle/p/3635912.html
Copyright © 2011-2022 走看看