程序猿程序员前端开发那些事

js数组方法全面总结

2016-05-19  本文已影响460人  Dreammin_chen

创建数组

var a = new Array()
var b = new Array(5);  //创建长度为5的数组
var c = new Array("a","b","c");
var a = [];
var b = [5];      //创建一个含数字5的数组
var c = ["a","b","c"];

数组属性

length表示数组的长度

var colors = ["red","green","blue","black"];
colors.length                   //4

length属性并不是只读的,通过设置该值可以从数组末尾删除项或向数组中添加项

var colors = ["red","green","blue","black"];
colors.length = 2;        //colors:["red","green"]
colors.length = 4;        //colors:["red","green",undefined,undefined]

数组方法

  1. push(item...) 向数组中添加元素,返回修改后数组的长度
var numbers= [1,2,3,4];
numbers.push(5)           //5       numbers:[1,2,3,4,5]
numbers.push(6,7)         //7       numbers:[1,2,3,4,5,6,7]
  1. pop() 从数组末尾移除一项,减少数组的长度,返回移除的项
var numbers= [1,2,3,4];
numbers.pop()           //4         numbers:[1,2,3]
  1. unshift(item...) 向数组前端添加任意项,返回** 修改后数组的长度 **
var numbers= [1,2,3,4];
numbers.unshift(5)           //5       numbers:[5,1,2,3,4]
numbers.unshift(6,7)         //7       numbers:[6,7,5,1,2,3,4]
  1. shift() 移除数组第一项,减少数组的长度,返回移除的项
var numbers= [1,2,3,4];
numbers.shift()           //1         numbers:[2,3,4]
  1. reverse()反转数组项的顺序,改变原数组
var numbers= [1,2,3,4];
numbers.reverse()          //[4,3,2,1]         numbers:[4,3,2,1]
  1. sort()默认情况下,即无参数情况,sort()方法按升序排列数组。该方法会调用每个数组项的tostring()方法,然后比较字符串,因此即使数组中每一项都是数值,sort()方法比较的也是字符串
var numbers= [1,15,5,10];
numbers.sort()          //[1, 10, 15, 5]         numbers:[1, 10, 15, 5]

sort()方法可以接受一个比较函数作为参数。其中比较函数接受两个参数,如果两个参数排序不需要交换位置则返回负数,如果需要交换位置则返回一个正数,如果两个参数相等则返回0

var numbers= [1,15,5,10];
function compare(val1,val2){
      if(val1 < val2){
         return -1;
      }
      else if(val1 > val2){
         return 1;
      }
      else{
         return 0;   
      }
}
numbers.sort(compare)          //[1, 5, 10,15]         numbers:[1, 5, 10,15]  
  1. concat()其参数可以是一个或多个项,也可以是一个或多个数组。创建一个当前数组的副本,然后在数组末尾添加参数项,并返回新的数组,原数组不变
 var numbers= [1,2,3,4];
 numbers.concat(5,[6,7])          //[1,2,3,4,5,6,7]         numbers:[1,2,3,4]
  1. slice()获取截取数组,如果是一个参数,则获取从该参数位置开始到数组结束所有值,如果有两个参数,则获取从起始值位置到结束值位置的值(不包括结束值位置项),返回新的数组。原数组不变
    如果结束值小于起始位置则返回空数组。
 var numbers= [1,2,3,4];
 numbers.slice(2)          //[3,4]         numbers:[1,2,3,4]
numbers.slice(1,3)       //[2,3]         numbers:[1,2,3,4]

** 注意:** * 如果参数中存在负数,则将参数值加上数组长度来计算。如:*

var numbers= [1,2,3,4];
numbers.slice(-1)          //[4]         numbers:[1,2,3,4]
numbers.slice(-4,-2)       //[1,2]         numbers:[1,2,3,4]
  1. splice() 返回删除项组成的数组,原数组被改变

    • 删除 :从指定位置删除指定项数
      splice(0,3) 表示删除数组的[0][1][2]位置的三项
    • 插入 : 从指定位置删除0项,再添加项
      splice(1,0,3,4) 表示从数组的第[1]项开始插入3,4两个值
    • 替换 :从指定位置删除指定项数,再添加项
      splice(1,2,3,4) 表示从数组[1][2]位置上的值被替换成3,4两个值

var numbers= [1,2,3,4];
numbers.splice(1,2) //[2,3] numbers:[1,4]
numbers.splice(1,0,2,3,4,5) //[] numbers:[1,2,3,4,5,4]
numbers.splice(2,2,4,5) //[3,4] numbers:[1,2,4,5,5,4]

4. `indexOf()`从前向后查找,接受两个参数:查找的项和查找的起点位置(可选),默认从数组的起始位置向后查找,返回**索引值**
```javascript
var numbers= [1,2,3,4,4,5,3,1,2];
numbers.indexOf(2)              //1        numbers:[1,2,3,4,4,5,3,1,2]
numbers.indexOf(2,4)              //8       numbers:[1,2,3,4,4,5,3,1,2]
  1. lastIndexOf()从后向前查找,接受两个参数:查找的项和查找的起点位置(可选),默认从数组的结束位置向前查找,返回索引值
var numbers= [1,2,3,4,4,5,3,1,2];
numbers.lastIndexOf(2)              //8        numbers:[1,2,3,4,4,5,3,1,2]
numbers.lastIndexOf(4,3)            //3        numbers:[1,2,3,4,4,5,3,1,2], 从[3]位向前查找
  1. every(fn)对数组中的每一项运行给定的函数,如果该函数对每一项都返回true,则返回true
  var numbers= [1,2,3,4,5];
 numbers.every(function(item,index,array){
       return (item>0);
 })                                                          //true       
numbers.every(function(item,index,array){
       return (item>2);
 })                                                         //false         
  1. filter(fn)对数组中的每一项运行给定的函数,返回该函数会返回true的项组成的数组
  var numbers= [1,2,3,4,5];
 numbers.filter(function(item,index,array){
       return (item>2);
 })                                                          //[3,4,5]       
  1. forEach(fn)对数组中的每一项运行给定的函数,没有返回值
  2. map(fn)对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组
  var numbers= [1,2,3,4,5];
 numbers.map(function(item,index,array){
       return (item+10);
 })                                                          //[11,12,13,14,15]       
  1. some(fn)对数组中的每一项运行给定的函数,如果该函数对任一项返回true,则返回true
   var numbers= [1,2,3,4,5];
  numbers.some(function(item,index,array){
        return (item>3);
  })                                                          //true  

以下两个方法都接受两个参数,一个是在数组每一项上调用的函数,另一个可选参数是作为归并基础的初始值。其中作为参数的函数接受4个参数:前一个值、当前值、项和索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项

  1. reduce(fn) 从头开始遍历
  2. reduceRight(ffn)从尾开始遍历
   var numbers= [1,2,3,4,5];
  numbers.reduce(function(pre,cur,index,array){
        return pre+cur;
  })                                               //15   对数组求和
numbers.reduce(function(pre,cur,index,array){
        return pre+cur;
  },10)                                           //25   以10为基数对求数组求和
上一篇 下一篇

猜你喜欢

热点阅读