JavaScript数组函数解析

1、创建和初始化数组

    (1)使用new关键字 

    var daysOfWeek = new Array()
    var daysOfWeek = new Array(7)
    var daysOfWeek = new Array('Sunday' , 'Monday', 'Tuesday', 'Wednesday', 'Thursday');

    (2)用[]形式

    var daysOfWeek = [];
    var daysOfWeek = ['Sunday' , 'Monday', 'Tuesday', 'Wednesday', 'Thursday'];

2、push在数组末尾添加元素

   var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    numbers.push(10);         //就会看到从0到10的值

3、unshift插入元素到数组首位

 numbers.unshift(-2);     //就会输出-2到10的值

4、pop删除数组末尾的值

 numbers.pop();    //输出-2到9的值

5、shift从数组首位删除元素

numbers.shift();    //输出0到9的值

6、splice在任意位置添加或删除元素

 numbers.splice(5,3);    //第一个参数为指定位置/索引,第二个参数为相应数量的元素,即删除了从数组索引5开始的3个元素
    //就意味着numbers[5]、numbers[6]、numbers[7]从数组中删除了,数组里的值变为:0、1、2、3、4、8、9

    现在,想把5、6、7插入到数组里,放到之前删除元素的位置上,可以再次使用splice

 numbers.splice(5, 0, 5, 6, 7);    //此时数组里的值又变为:0, 1, 2, 3, 4, 5, 6, 7, 8, 9

7、concat数组合并

    连接2个或更多数组,并返回结果

    var zero = 0;
    var positiveNumbers = [1, 2, 3];
    var negativeNumbers = [-3, -2, -1];
    var numbers = negativeNumbers.concat(zero, positiveNumbers); //输出结果为:-3,-2,-1,0,1,2,3

8、every方法迭代

    every方法会迭代数组中的每个元素,直到返回false

var isEven = function(x) {
    //如果x是2的倍数,就返回true
    console.log(x);
    return(x % 2 ==0);
    }
     var myNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
     myNumbers.every(isEven);  //数组中第一个元素是1,不是2的倍数,isEven函数返回false,every执行完毕。

9、some方法迭代

    与every方法类似,不过some方法会迭代数组的每个元素,直到函数返回true

    myNumbers.some(isEven); //第二个被迭代的元素是2,isEven返回true,迭代结束

10、forEach方法迭代

    迭代整个数组,输出所有isEven返回true的值,与for循环的结果相同

11、使用map和filter方法

    返回新数组的遍历方法,第一个是map

 var myMap = myNumbers.map(isEven);  //myMap里的值是:[false, true, false, true, false, true,false, true,false, true, false, true, false, true, false]

    还有一个filter,它返回的新数组由使函数返回true的元素组成,

 var evenNumbers = myNumbers.filter(isEven); //evenNumbers中的值为[2, 4,  6, 8, 10,  12, 14]

12、循环中获取上一次计算的结果 reduce

var arr = ["a","bc","def","g"];  
var ret = arr.reduce(function(prev, cur, index, _arr){  
    console.log(prev, cur);  
    return cur;  
});     // ret = "g"  
//打印如下  
//a bc  
//bc def  
//def g   
var arr = ["a","bc","def","g"];  
var ret = arr.reduce(function(prev, cur, index, _arr){  
    console.log(prev, cur);  
    return cur;  
},"hello"); // ret = "g"  
//打印如下  
//hello a  
//a bc  
//bc def  
//def g   

    reduce的返回值是最后一次运算的结果, 它的回调函数中的第一个参数是上次运算的结果,第二个是当前元素的值,第三个是当前下表,第四个是数组。

13、从后往前获取指定元素第一次出现的位置 lastIndexOf

var arr = ["a","bbb","c","d","a","e","c","f"];  
var ret1 = arr.lastIndexOf("a");     //ret = 4  
var ret2 = arr.lastIndexOf("a",2);   //ret = 0  
var ret3 = arr.lastIndexOf("a",-2);  //ret = 4  
var ret4 = arr.lastIndexOf("a",-6);  //ret = 0  
var ret5 = arr.lastIndexOf("a",-10); //ret = -1  

    lastIndexOf找不到所需的元素时,返回-1;从指定位置开始往前找元素第一次出现的位置,如果第二个参数为空的话,默认是数组的长度。

14、获取元素第一次出现的位置 indexOf

var arr = ["a","b","c","d","a","e","c","f"];  
var ret1 = arr.indexOf("a");     //ret = 0  
var ret2 = arr.indexOf("a",2);   //ret = 4  
var ret3 = arr.indexOf("a",-2);  //ret = -1  
var ret4 = arr.indexOf("a",-6);  //ret = 4  
var ret5 = arr.indexOf("a",-10); //ret=0  

    indexOf找不到所需的元素时,返回-1; 从指定位置开始往后找元素第一次出现的位置,如果第二个参数为空的话,默认为0;

15、转换成字符串 toString

var arr = [1,12,4];  
var ret = arr.toString();   // ret = 1,12,4  

16、获取数组片段 slice

  • slice()方法中可以有一个或者两个参数(代表数组的索引值,0,1,2……)
  • 当有1个参数时:返回当前数组中从此参数位置开始到当前数组末尾间所有项
  • 当有2个参数时:返回当前数组中两个参数位置间的所有项,但不返回第二个参数位置的项
  • 参数也可以为负数,表示从末尾算起,-1代表最后一个,使用方法和正数一样。
var arr= ["a","b","c","d","e","f"];  
var result1 = arr.slice(2);  
var result2= arr.slice(1,4);  
var result3= arr.slice(2,-2);  
var result4= arr.slice(-3,-1);  
console.log(result1 ); //["c","d","e","f"];   
console.log(result2 ); //["b","c","d"];   
console.log(result3 );//["c","d"]  
console.log(result4 );//["d","e"]  

17、排序元素

  • reverse反序
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var arr1 = arr.reverse();
console.log(arr1);//10,9,8,7,6,5,4,3,2,1
  • sort升序,但是在对数组做排序时,把元素默认成字符串进行比较
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var arr2 = arr.sort();
console.log(arr2);  //1,10,2,3,4,5,6,7,8,9 是因为把元素默认为字符串进行比较的

我们可以在sort中传入自己写的比较函数,如下:

var arr = [10,9,8,7,6,5,4,3,2,1]
function compare(a,b){
  if(a<b){
    return -1;
  }else if(a>b){
    return 1;
  }else{
    return 0;
  }
}
var arr1 = arr.sort(compare);
console.log(arr1); //1,2,3,4,5,6,7,8,9,10

18、join使用分隔符隔开数组中元素

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var arr1 = arr.join('-');
console.log(arr1);  //输出1-2-3-4-5-6-7-8-9-10

暂时总结这些,后续如有补充还会更新~


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值