javascript入门之数组[新手必看]

一、定义数组。

    定义数组有两个方法:

    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是字符串,并非数组对象

(0)

相关推荐

  • AngularJS下对数组的对比分析

    Javascript不能直接用==或者===来判断两个数组是否相等,无论是相等还是全等都不行,以下两行JS代码都会返回false <script type="text/javascript"> alert([]==[]); alert([]===[]); </script> 要判断JS中的两个数组是否相同,需要先将数组转换为字符串,再作比较.以下两行代码将返回true <script type="text/javascript">

  • js删除Array数组中指定元素的两种方法

    本节内容: js删除Array数组中指定元素 方法一, /* * 方法:Array.remove(dx) 通过遍历,重构数组 * 功能:删除数组元素. * 参数:dx删除元素的下标. */ Array.prototype.remove=function(dx) { if(isNaN(dx)||dx>this.length){return false;} for(var i=0,n=0;i<this.length;i++) { if(this[i]!=this[dx]) { this[n++]=

  • JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解

    废话不多说了,直奔主题,你,具体代码如下所示: <script> //----------------for用来遍历数组对象-- var i,myArr = [1,2,3]; for (var i = 0; i < myArr.length; i++) { console.log(i+":"+myArr[i]); }; //---------for-in 用来遍历非数组对象 var man ={hands:2,legs:2,heads:1}; //为所有的对象添加cl

  • 分享JS数组求和与求最大值的方法

    前言 面试遇到一个问题:JS数组求和函数.我第一想到的就是数组循环.然而我觉得面试官问这个问题一定不是想考这个人人皆知的方法.当时机智的我竟然想到了递归函数不断加和数组的项,然而折腾了好久都没调好方法,事实证明这并不是最优解.最后面试官问我有没有见过reduce(),真木有哇.所以回来查资料,Array.reduce()是ES5新增的新属性,相似的还有Array.reduceRight(). 下文来总结一下数组求和的方法. 最粗暴的方法:循环获取 通过for循环一项项地加和.看代码: Array

  • JS从数组中随机取出几个数组元素的方法

    JS如何从一个数组中随机取出一个元素或者几个元素. 假如数组为 var items = ['1','2','4','5','6','7','8','9','10']; 1.从数组items中随机取出一个元素 var item = items[Math.floor(Math.random()*items.length)]; 2.从前面的一篇随机数组中随机取几个元素 function getRandomArrayElements(arr, count) { var shuffled = arr.sl

  • AngularJS中比较两个数组是否相同

    Javascript不能直接用==或者===来判断两个数组是否相等,无论是相等还是全等都不行,以下两行JS代码都会返回false <script type="text/javascript"> alert([]==[]); alert([]===[]); </script> 要判断JS中的两个数组是否相同,需要先将数组转换为字符串,再作比较.以下两行代码将返回true <script type="text/javascript">

  • 浅谈js中字符和数组一些基本算法题

    最近在刷 fcc的题,跟升级打怪一样,一关一关的过,还挺吸引我的.今天抽时间把 Basic Algorithm Scritping  这部分题做了,根据一些提示,还是比较简单的.有些题的处理方式 方法,我想值得借鉴.比如在项目中有时候要处理一个字符,如果想不到一些相关的方法,还挺费事的,所以,在此记录下来,如果以后遇到一些字符或者数组处理,可以来翻翻这篇文章,希望以此得到一些提示而不是去翻文档. 看到此博文的博友,有更好更简单的代码或者好的想法,请留言交流(我一直觉得只有学习别人的优秀代码才能进

  • 关于JS中二维数组的声明方法

    如下所示: var myarr=new Array(); //先声明一维 for(var i=0;i<2;i++){ //一维长度为2 myarr[i]=new Array(); //再声明二维 for(var j=0;j<3;j++){ //二维长度为3 myarr[i][j]=i+j; // 赋值,每个数组元素的值为i+j } } 以上就是小编为大家带来的关于JS中二维数组的声明方法的全部内容了,希望对大家有所帮助,多多支持我们~

  • js 声明数组和向数组中添加对象变量的简单实例

    数组有四种定义的方式 使用构造函数: var a = new Array(); var b = new Array(10); var c = new Array("first", "second", "third"); 或者数组直接量: var d = ["first", "second", "third"]; 扩展: function ObjStory(id,biaoti,author

  • js删除数组元素、清空数组的简单方法(必看)

    一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删除数组元素 var ary = [1,2,3,4]; ary.splice(0,1); 或 ary.splice($.inArray(2, ary), 1); 其中$.inArray(2, ary)用来查找某元素在数组中的索引位置. 三,js 删除数组几种方法 var arr=['a','b','c

随机推荐