一、定义数组。

    定义数组有两个方法:

    1、var arr1 = [];  //定义一个空数组

    2、var arr2 = [1,2,3,"str1","str2"];  //定义一个有5个元素的数组。

    3、var arr3 = new Array(3);  //定义一个空数组

    4、var arr4 = new Array(1,2,3,"str1","str2");  //定义一个指定长度为5的数组。

二、数组元素的读和写。

    arr[0];    //读取第一个数组元素

    arr[0] = "str1";  //改变数组第一个元素的值。

三、稀疏数组。

    稀疏数组表示从0 开始不连续索引的数组。通常数组的length代表元素中元素个数,如果数组是稀疏的,length属性值将大于元素的个数。

    in 操作符用于检测元素在某位置是否存在元素,注意undefined也算存在。

    如:var a1 = [,,];

      var a2 = new Array(3);

      0 in a1;  //true,因为a[0]有undefined元素

      0 in a2;  //false,a2在索引0处没有元素

四、数组长度

    length属性用于标志数组的长度

    如:var arr = [1,2,3,4,5];

      arr.length;  //5 arr数组有5个元素

五、数组元素的添加和删除

    push:  //在数组的末尾添加一个元素

    var arr = [1,2,3];

    arr.push(4,5);    //arr变为[1,2,3,4,5]

    delete: //删除数组某个位置的元素

    var arr = [1,2,3]

    delete arr[1]  //arr变为[1,,3]

    1 in arr      //false

六、数组的遍历

    数组的遍历通常使用for语句来实现

    var arr = [1,2,3,4,5];

    for(var i = 0.i<arr.length;i++){

      if(!a[i]) continue;        //跳过null,undefined和不存在的元素

    }

七、多维数组

    多维数组就是数组里的元素还是数组

    如:var arr = [[1,2,3],[,4,5,6]];

      arr[1][1];  // 5

八、数组方法

    1、 join()  用于将数组中所有元素都转化为字符串 并连接在一起,还可以自定义连接字符

      var arr = [1,2,3];

      arr.join();    // => "1,2,3"

      arr.join("==");   // => "1==2==3";

     2、 reverse()  用于将数组元素的顺序颠倒

      var arr = [1,2,3];

      arr.reverse();  //arr数组变为[3,2,1]

     3、 sort();   //用于对数组内的元素进行排序。可以传入一个函数用作排序,如果为空,则按字母顺序排序。undifined元素排到最后

      var arr = [1,2,3];

      a.sort(function(a,b){

        return a-b; //排序标准 负数 0 正数,比较结果先返回小的那个 

      });  //arr数组的值为[1,2,3]  如果第二个条件变为b-a则结果为[3,2,1]

      4、concat()  //用于组合一个新的数组,返回一个新的数组

      var arr = [1,2,3]

      arrnew = arr.concat(4,5)  //arrnew数组为[1,2,3,4,5]

      arrnew1 = arr.concat([4,5],[6,7]);  //arrnew1数组为[1,2,3,4,5,6,7]

      5、slice()  //用于返回数组指定区间的元素组成的数组,如果输入一个参数,则是从这个参数到结束之间的数组。两个参数就是,第一个参数是起始位置,第二个参数是个数。

       var arr = [1,2,3,4,5];

       var arr1 = arr.slice(2);  //[3,4,5]

       var arr2 = arr.slice(1,3); //[2,3]

     6、splice()   删除或者添加元素。会改变原数组本身,相当于C#中的引用(ref),原数组是删除的元素组成的数组,返回值是剩下的元素组成的数组。

      var arr = [1,2,3,4,5];

      var arr1 = arr.splice(1,3);  //arr为[2,3,4],返回的数组arr1为[1,5]

      var arr2 = [1,2,3,4,5];

      var arr3 = arr2.splice(2,0,'a','b');  //从第2位开始删除,删除两个元素,然后从该位置插入'a','b';arr2为[],因为没有删除任何元素,arr3[1,2,'a','b',3,4,5]

      7、 push()与pop()  在数组尾部添加或删除一个元素,添加时返回之为最后一个添加的元素,删除时。返回值为删除的那个元素。

      push()  函数在数组尾部添加一个元素。

      pop()   函数删除数组的最后一个元素。

      var arr = [1,2,3]

      arr.push(4);  //arr为[1,2,3,4]

      var arr1 = [1,2,3]

      arr.pop();   //arr1为[1,2]

      8、unshift()和shift()

      shift(),unshift()与push(),pop()只不过,是在数组头部操作而非尾部。

      shift()  在数组头部移除一个元素,返回值为被删元素。

      unshift() 在数组头部添加一个元素,返回组为最后一个添加的元素。

      var arr = [1,2,3];

      var a = arr.shift();  //arr变为[2,3] a为1

      var arr1 = [1,2,3];

      var b = arr1.unshift([4,5]);  //arr1变为[4,51,2,3],b为4  返回最后一个添加的,先添加5再添加4

      9、toString()和toLocaleString()  将数组转化为字符串

      var arr = [1,2,3]

      arr.toString();  //生成"1,2,3"  与不使用任何参数的join()是一样的。

二、ECMAScript中的数组方法

    1、forEach()  forEach() 从头到尾遍历数组,为每个元素调用指定的函数。

      var arr = [1, 2, 3, 4, 5];
var sum = 0;
arr.forEach(function (value) {
sum = sum + value;
});
document.write(sum);  //sum最终为15

     2、map()  map()方法将调用的数组的每个元素传递给指定的函数,并返回一个数组。

      var arr = [1, 2, 3, 4, 5];
var arr1 = arr.map(function (value) {
return value + 1;
});
document.write(arr1.join()); //arr1为[2,3,4,5,6]

     3、filter()  filter()过滤,返回的元素是调用数组的一个子集,过滤掉不符合条件的元素。

        var arr = [1, 2, 3, 4, 5, 6];
var arr1 = arr.filter(function (i) { return i % 2 == 0 });
document.write(arr1.join());  //arr1为[2,4,6]

    4、every()和some()  

      every()当且仅当数组里的所有元素调用判定函数都返回true,它才返回true。第一次返回false就停止遍历。

      some()当数组里存在一个元素调用判定函数返回true,它就返回true。第一次返回true就停止遍历。

        var arr = [1, 2, 3, 4, 5, 6];
var a = arr.every(function (x) { return x > 3; });
var b = arr.some(function(y){ return y > 3; });
document.write("a的值是:" + a);  //a的值是false,a中不是所有元素大于3
document.write("b的值是:" + b);  //b的值是true,b中存在元素大于3

     5、reduce()和reduceRight()

      reduce()  将数组中的元素以指定函数进行组合,生成单个值,第一个参数是简化操作函数,第二个参数是传递给函数的初始值。最后结果是初始值再按组合函数与最后结果计算一次。第二个参数即初始值可以省略,当初始值省略就直接从第一个元素开始计算。

        var arr = [1, 2, 3, 4, 5, 6];
var count = arr.reduce(function (x, y) { return x + y; },0);
document.write(count);

      reduceRight();  与reduce()唯一的不同就是它从右至左选择元素进行计算。

     6、indexOf()和lastInsexOf()

     indexOf()  indexOf()从头至少尾返回找到的第一个元素的索引。

     lastIndexOf()  lastIndexOf()倒序查找元素,返回第一个找到元素的索引。

        var arr = [1, 2, 3, 2, 1];
var i = arr.indexOf(2);  //从头至尾搜索,第一次遇见2是arr[1],因此返回1
var j = arr.lastIndexOf(2);  //从尾至头搜索,第一次遇见2是arr[3],因此返回3
document.write(i + "<br/>");
document.write(j);

     7、Array.isArray();  //判定一个对象是否数组对象

        var arr = [1, 2, 3];
var str = "str1";
document.write(Array.isArray(arr));  //返回true arr是数组对象
document.write(Array.isArray(str));  //返回false str是字符串,并非数组对象

    

javascript之数组的更多相关文章

  1. JavaScript Array数组方法详解

    Array类型是ECMAScript中最常用的引用类型.ECMAScript中的数据与其它大多数语言中的数组有着相当大的区别.虽然ECMAScript中的数据与其它语言中的数组一样都是数据的有序列表, ...

  2. JavaScript从数组中删除指定值元素的方法

    本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...

  3. JavaScript中数组操作常用方法

    JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...

  4. javascript常用数组算法总结

    1.数组去重 方法1: JavaScript //利用数组的indexOf方法 function unique (arr) { var result = []; for (var i = 0; i & ...

  5. javascript中数组的22种方法

    × 目录 [1]对象继承 [2]数组转换 [3]栈和队列[4]数组排序[5]数组拼接[6]创建数组[7]数组删改[8]数组位置[9]数组归并[10]数组迭代[11]总结 前面的话 数组总共有22种方法 ...

  6. javascript中数组Array的方法

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

  7. 第二章:javascript: 数组

    数组是编程世界里最常见的数据结构.任何一种编程语言都包含数组,只是形式稍微有差异.数组是编程语言中的内建类型,通常效率都很高.可以满足不同需求的数据存储,本章将探索javascript中的数组工作原理 ...

  8. JavaScript操作数组

    数组被描述为一个存储元素的线性集合,元素可以通过索引来任意存取. 几乎所有的编程语言都有类似的数据结构,但是Javascript中的数组却略有不同. Javascript中的数组是一种特殊的对象,所以 ...

  9. Javascript中数组

    Javascript中数组 1.什么是数组 所谓的数组就是一组数据的集合,在内存中表现为一段连续的内存地址(保存在堆内存) 2.创建数组的含义 创建数组的目的:就是为了保存更多的数据 3.数组的定义 ...

  10. JavaScript删除数组重复元素的5个高效算法

    之前一段时间一直在准备面试, 因而博客太久没更新: 现在基本知识点都复习完毕, 接下来就分享下 面试的一些常见问题: 去正规的互联网公司笔试.面试有很大的概率会碰到 使用javascript实现数组去 ...

随机推荐

  1. 浅谈 qmake 之 shadow build(将源码路径和构建路径分开,一套源码要分别用msvc2008、msvc2008、mingw分别编译又不互相干扰)

    shadow build shadow build 是什么东西?就是将源码路径和构建路径分开(也就是生成的makefile文件和其他产物都不放到源码路径),以此来保证源码路径的清洁. 这不是qmake ...

  2. WebApi 能支持Session

    由于项目实际需要,我希望让WebApi服务也能支持Session,所以便查找资料按照网上的方法开始着手实验. 然后就有了以下的代码,主要是说让WebApi支持Session,要重写Global.asa ...

  3. AQS详解

    一.概述 谈到并发,不得不谈ReentrantLock:而谈到ReentrantLock,不得不谈AbstractQueuedSynchronized(AQS)! 类如其名,抽象的队列式的同步器,AQ ...

  4. The end of other

    The end of other For language training our Robots want to learn about suffixes. In this task, you ar ...

  5. yii 的mvc工作流

    Yii 使用了 Web 开发中广泛采用的模型-视图-控制器(MVC)设计模式. MVC的目标是将业务逻辑从用户界面的考虑中分离,这样开发者就可以更容易地改变每一部分而不会影响其他. 在 MVC中,模型 ...

  6. 关于Microsoft app下同义词的整理

    Windows os 以下词表达的是同一个概念 windows store app windows metro app windows modern app windows runtime app w ...

  7. ASCII码、base64编码 为什么有的代码要用 base64 进行编码?

    百度百科 ASCII码:http://baike.baidu.com/link?url=bNtzytBhlSUt_l3pwpfICxCxqgAfqsBMaeWX6QF7gH46Tg4pQtKM2aAV ...

  8. ACM—Number Sequence(HDOJ1005)

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005 主要内容: A number sequence is defined as follows: f ...

  9. 修改UISearchBar输入框字体颜色

    UITextField *searchField = [mySearchBar valueForKey:@"_searchField"]; searchField.textColo ...

  10. AFNetwork 作用和使用方法具体解释

    转自:http://www.maxiaoguo.com/clothes/269.html AFNetworking是一个轻量级的iOS网络通信类库.它建立在NSURLConnection和NSOper ...