js 数组 api

1.sort()

arr.sort([function])

对数组元素排序。在原数组上排序,并返回这个数组。

(1)若没有function,按ascii字母顺序排序

var arr = [10,60,300,50,80];
arr.sort();
console.log(arr) //[10,300,50,60,80]

(2)若有function,该函数比较两个值,返回一个说明这两个值相对顺序的数字。

    a.若function(a,b)小于0,a排在b前面。

    b.若function(a,b)大于0,a排在b后面。

    c.若function(a,b)大于0,a与b相对位置不变。

var arr = [10,60,300,50,80];
    arr.sort(function(a,b){
      return a - b;
    });
    console.log(arr);//[10,50,60,80,300]

var objArr = [ {id:1,count:12}, {id:2,count:3}, {id:3,count:8}, {id:4}, {id:5,count:20} ]; objArr.sort(function(a,b){ if(a.count < b.count){ return -1; } if(a.count > b.count){ return 1; } return 0; }) console.log(objArr);//[{id:2,count:3},{id:3,count:8},{id:1,count:12},{id:4},{id:5,count:20}]

2.concat()

arr.concat([item],[item],[...],[item])

连接两个或多个数组,不修改原数组,返回一个新数组。

item可以是具体的值,也可以是数组。若item是数组,把数组的元素添加到目标数组中。若没有item,生成一个目标元素的副本。

var arr = [10,60],
    arr1 = [20,30],
    arr2 = [[30,10],[12]];
var newArr = arr.concat(arr1,arr2,0);
console.log(newArr);//[10,60,20,30,[30,10],[12],0]    

3.splice()

arr.splice(start,[deleteCount],[item],[item],[...],[item])

插入、删除或替换数组元素,修改原数组。返回删除的元素组成的数组,若没有删除元素,返回一个空数组。

start:规定添加、删除元素的位置。start从0开始计算,删除、添加操作都包含start这个位置。start超过数组长度,添加元素从数组末尾开始添加。若start为负值,表示从数组末尾开始的第几位,-1表示倒第一个元素,-2表示倒第二个元素。

deleteCount:如果没有此参数,删除从start开始到结尾的所有元素。

item:添加的新元素。

var arr = [10,5,30,29,6,30],
      rtArr;
    rtArr = arr.splice(1,1);
    console.log(rtArr);//[5]
    console.log(arr);//[10,30,29,6,30]

    rtArr = arr.splice(4,0,100,120);
    console.log(rtArr);//[]
    console.log(arr);//[10,30,29,6,100,120,30]

    rtArr = arr.splice(-2,2,1000,1001);
    console.log(rtArr);//[120,30]
    console.log(arr);//[10,30,29,6,100,1000,1001]

4.slice()

arr.slice(start,end)

返回一个新数组,包含从start到end(不包含该元素)的arr中的元素。

若start或end的值为负值,表示从末位开始的第几位,-1表示倒数第一个,-2表示倒数第2个,以此类推。

var arr = [10,5,30,29,6,30],
      newArr;

    newArr = arr.slice(-4,-2);
    console.log(newArr);//[30,29]

    newArr = arr.slice(1,5);
    console.log(newArr);//[5,30,29,6]

5.reverse()

arr.reverse()

颠倒数组元素的位置,改变原来的数组。

var arr = [10,5,30,6,30];
    arr.reverse();
    console.log(arr);//[30,6,30,5,10]

6.unshift(), shift(), pop(), push()

arr.unshift(elem1,[elem2],[...],[elemN])

向数组的开头添加一个或更多元素,并返回新的数组的长度。

arr.shift()

删除数组的第一个元素,并返回数组的第一个元素的值。

arr.pop()

删除数组的最后一个元素,并返回数组的最后一个元素。

arr.push(elem1,[elem2],[...],[elemN])

向数组的末尾添加一个或多个元素,并返回新的数组的长度。

7.join()

arr.join([separator])

将数组中的所有元素连接成一个字符串。

如果没有参数separator,默认使用逗号作为分隔符。

 

ES5(数组)

浏览器支持:

Opera 11+

Firefox 3.6+

Safari 5+

Chrome 8+

Internet Explorer 9+

8.forEach()

arr.forEach(callbackfn,[thisArg])

遍历数组的每个元素,并且执行一次callbackfn。

callbackfn(value,index,arr):value表示数组当前项的值,index表示当前项的索引,arr表示数组本身。

thisArg:callbackfn函数中this关键字引用的对象。如果省略thisArg,则undefined将用作this值。如果 thisArg 值为 undefined或 null,函数的 this 值取决于当前执行环境是否为严格模式(严格模式下为 undefined,非严格模式下为全局对象)。

var arr = [10,5,30,6,30];
    arr.forEach(function(value,index,array){
       if(index == 0){
         console.log(array);
         console.log(this);
       }
       console.log((index+1)+':'+value);
    })

    

 

posted @ 2016-06-30 16:40  springmin  阅读(540)  评论(0编辑  收藏  举报