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解决的。

JavaScript中的Array的更多相关文章

  1. ExtJS学习-----------Ext.Array,ExtJS对javascript中的Array的扩展

    关于ExtJS对javascript中的Array的扩展.能够參考其帮助文档,文档下载地址:http://download.csdn.net/detail/z1137730824/7748893 因为 ...

  2. JavaScript中数组Array方法详解

    ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...

  3. Javascript中的Array(数组) 、{}(映射) 与JSON解析

    做网页总会使用javascript,使用javascript总会使用JSON.最近用到一下,就写写. 下面是总结: 1.将javascript中的Array和{}转化为json字符串可以使用json2 ...

  4. JavaScript中的Array.prototype.slice.call()方法学习

    JavaScript中的Array.prototype.slice.call(arguments)能将有length属性的对象转换为数组(特别注意: 这个对象一定要有length属性). 但有一个例外 ...

  5. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  6. javascript中数组Array的方法

    一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...

  7. 详解Javascript中的Array对象

    基础介绍 创建数组 和Object对象一样,创建Array也有2种方式:构造函数.字面量法. 构造函数创建 使用构造函数的方式可以通过new关键字来声明,如下所示: 12 var arr = new ...

  8. [转] 理解 JavaScript 中的 Array.prototype.slice.apply(arguments)

    假如你是一个 JavaScript 开发者,你可能见到过 Array.prototype.slice.apply(arguments) 这样的用法,然后你会问,这么写是什么意思呢? 这个语法其实不难理 ...

  9. JavaScript中的Array类型详解

    与其他语言中的数组的区别: 1.JavaScript数组的每一项都可以保存任何类型的数据,一个数组的数组元素可以是不同类型的数据. 2.数组的大小是动态调整的,可以随着数据的添加自动的增长. 1.两种 ...

  10. 理解javascript中的Array类型

    引子: 从事前端开发有段时间了,个人观点:想在前端开发这条路上走的更远,不仅要学好HTML&HTML5.CSS&CSS3,最重要的就是要学好javascript了.所以打好javasc ...

随机推荐

  1. BZOJ2733 [HNOI2012]永无乡

    直接平衡树启发式合并就好了...貌似是个很高端的东西.. 貌似可以证明splay的启发式合并是均摊$O(nlogn)$的...而其他平衡树都不行,所以其他的复杂度都是$O(nlog^2n)的$的 所以 ...

  2. Octopus系列之UploadValues异步上载

    不多说了直接上代码 public void ProcessRequest(HttpContext context) { context.Response.ContentType = "tex ...

  3. IOS开发UI篇—导航控制器属性和基本使用

    IOS开发UI篇—导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController ...

  4. Gridview布局界面练习Simple Adapter

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZcAAAJcCAIAAAC6w36wAAAgAElEQVR4nOy953YbS5KuvVsiTFWlz6

  5. [转]Web3.0时代,企业知识管理新趋势

    [转自http://www.amt.com.cn/html/ManageFront/AMTPoint0/2014/0716/1370.html] Web3.0时代,企业知识管理新趋势 2014-07- ...

  6. javascript 继承实现

    JavaScript高级程序设计读书笔记 这本书继承的实现列举了好几种,里面有两种是比较靠谱的. 1 组合继承 //父构造函数 function Super(name) { this.name = n ...

  7. 使用url下载网络图片以及流介绍

    使用url下载网络图片的时候,首先需要建立一个URL对象,然后使用一个输入流获取该URL中的内容.之后使用读取该输入流的内容,使用一个输出流写到本地文件中.最后关闭输入和输出流.下面是一个简单的下载代 ...

  8. android 高效加载大图

    在写代码的时候就已经解释: /** * 计算samplesize的大小 * @param options 传一个BitmapFactory.Options 进去获取图片的大小和类型 * @param ...

  9. Android常见控件— — —ProgressBar

    ProgressBar用于在界面上显示一个进度条,表示我们的程序正在加载一些数据. <?xml version="1.0" encoding="utf-8" ...

  10. Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分 (转载)

    本文参考了谷歌开发者文档:http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#provisional 如果 ...