javascript数组

javascript也是数组也是对象。

数组构造方法: new Array()或Array(),[];

  1. new Array()等效于Array();
  2. 如果不需要初始化长度的话 arr = [];
  3. Array构造函数有一个很大的问题,就是不同的参数,会导致它的行为不一致。
// 无参数时,返回一个空数组
new Array() // []
// 单个正整数参数,表示返回的新数组的长度
new Array(2) // [ , ,]
// 非正整数的数值作为参数,会报错
new Array(3.2) // RangeError: Invalid array length
new Array(-3) // RangeError: Invalid array length
// 单个非正整数参数(比如字符串、布尔值、对象等),
// 则该参数是返回的新数组的成员
new Array([1]) // [Array[1]]
// 多参数时,所有参数都是返回的新数组的成员
new Array(1, 2) // [1, 2]
new Array('a', 'b', 'c') // ['a', 'b', 'c']

数组的检测:

Array.isArray 或 String.prototype.toString.call(obj) == "[object Array]";

常用方法:

  1.valueOf方法返回数组本身

2.push方法

  var a = [1,2,3];

     var b = [4,5,6];

     Array.prototype.push.apply(a,b);

     a.push.apply(a, b);

     // 上面两种写法等效于

    a.push(b);

3.join方法,以参数作为分隔符,将数组转化为字符串.此方法适用于类数组对象或字符串

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

      arr.join();   // 1,2,3,4

     var str = "abc";

     [].join.call(str, "-"); //a-b-c;

      4.map方法:

          var arr = [1,2,3];

          arr.map = (element,index,arr)=>{return element * 2}; //[2,4,6]

     5.forEach方法:

         forEach方法和map方法类似,但一般不返回

         var out = [];

         var arr = [1,2,3];

         arr.forEach(function(element,index,arr){this.push(element * 2)}, out);   // [2,4,6]

    6.filter方法

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

       arr.filter((element,index,arr)=>{return element > 3}); // 4,5

       arr = [1,"a",null];

       arr.filter(Boolean);  //[1,"a"]

       filter跟forEach一样也接受第二个参数(scope)

    7,some,every方法,断言数组

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

       arr.some((element,index,arr)=>{return element > 3}); // true

   8.reduce,reduceRight从左到右,从右到左处理元素

       var arr = [1,2,3];

       function substract(prev,cur){

    return prev - cur;

      }

      arr.reduce(substract); // 0

      arr.reduceRight(substract); // -4

      

 

 

posted @ 2016-10-30 23:03  wanhong  阅读(76)  评论(0编辑  收藏  举报