首页 > 技术文章 > Javascript 中的数组

lmy-ms 2017-03-16 11:33 原文

1、用  array.length  也可以移除数组后面的项:

     var colors = ['red', 'blue', 'green'];

     colors.length = 2;

     console.log(colors[2]);  //undefined

 

 

2、如果将其length属性设置大于数组项数的值,则新增的每一项都会取得 undefined 值:

     var colors = ['red', 'blue', 'green'];

     colors.length = 4;

     console.log(colors[3]);  //undefined

 

3确定某个值是不是数组:

     if(Array.isArray(value)){

      //对数组执行操作

      }

 

 

4、instanceof 运算符返回一个boolean值,表示指定对象是否为某个构造函数的实例。

 

5栈方法push() 返回 数组的新长度

      var colors = ['red', 'blue', 'green'];

      var count = colors.push('pink');

      console.log(count);  //4

 

6、栈方法pop() 返回数组中最后一项。

     var colors = ['red', 'blue', 'green'];

     var item= colors.pop();

     console.log(item);  // 'green'

     console.log(colors .length);  //2

 

7队列方法 shift() 移除数组中第一项,并返回该项,同时将数组长度减 1

 

8、队列方法 unshift() 在数组前添加任意个项并返回数组新长度。

 

9、重排序方法

     reverse(); 将数组反转,返回值是经过排序后的数组

     sort(); 接受一个比较函数作为参数,返回值是经过排序后的数组

     ====升序排列

     var values = [0,1,5,10,15];

     function compare(value1, value2){

         if(value1 < value2) {

              return -1;

        } else if(value1 > value2) {

            return 1;

        } else {

            return 0;

        }   

     }

     values.sort(compare);

     alert(values);  // 0,1,5,10,15

 

     =====降序排列

    function compare(value1, value2){

         if(value1 < value2) {

              return 1;

        } else if(value1 > value2) {

            return -1;

        } else {

            return 0;

        }   

     }

     values.sort(compare);

     alert(values);  // 1510510

 

10操作方法 concat()  这个方法将创建当前数组的一个副本,然后后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组;

      var colors = ['red','green'];

      var colors1 = colors.concat();

      var colors2 = colors.concat('blue',['pink','black']);

      console.log(colors);  // ['red','green']

      alert(colors1);  // red,green

      console.log(colors2); // ['red','green','blue','pink','black']

 

 

 

11、操作方法 slice() 方法,基于当前数组中的一或多个项创建一个新数组。slice() 方法可以接受一个或两个参数。该方法不影响原数组。

Var colors = ['red','green','blue','pink','black'];

Colors.slice(1) ; // ['green','blue','pink','black'];

Colors.slice(1,4); // ['green','blue','pink'];

参数

结果

一个

返回从该参数指定位置开始到当前数组末尾的所有项

两个

返回起始和结束之间的项(但不包括结束位置的项)

有负数

用数组的长度加上该数来确定相应的位置,如 slice(-2,-1) =>slice(3,4)

结束位置小于起始位置

返回空数组

     

12、操作方法 splice 主要用途是向数组的中部插入项。该方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除的项,则返回空数组),并且改变原数组

       splice(起始位置,要删除的项,替换的项,替换的项,。。。)

    

 

 

13 位置方法 ,indexOf() 和 lastIndexOf() ,都接受两个参数:要查找的项和(可选的)表示查找起点位置的索引。都返回要查找的项在数组中的位置,或者没找到的情况下返回 -1

        indexOf() 从数组的开头向后查找

        lastIndexOf() 从数组的末尾向前查找

在比较第一个参数与数组中的每一项时,会使用全等操作符;也就是说,要求查的项必须严格相等(就像使用 === 一样)。

       var person = {name: 'Mary'};

       var people = [{name: 'Mary'}];

       var morePeople = [person];

       

       alert(people.indexOf(person));  //-1

       alert(morePeople.indexOf(person));  //0  

 

14迭代方法:

          every() 传入函数,数组中的而每一项返回true则返回true

        some()传入函数, 数组中有一项项返回true则返回true

        map() 传入函数,返回每一项执行后的结果组成的数组

        filter() 传入函数,返回 执行为true 的项组成的数组

        forEach() 传入函数,每一项执行函数操作,没有返回值

推荐阅读