数组的方法

173 阅读4分钟
  • concat()是内置对象的方法,将两个数组中的元素内容合并成一个新的数组且返回值是新数组,不会改变原来的每个数组。
  • push() 直接在原数组的最后追加元素,返回值是数组是追加后的长度。
  • pop() 从原数组的最后一项删除元素,返回值是删除的元素。
  • unshift()从数组的最前面添加元素,返回值是新数组的长度。
  • shift() 删除数组中的第一项元素,返回值是删除的元素。
  • indexOf()只有一个参数的时候,表示从数组的第一个位置开始查找,找到符合参数要求的索引。一个参数的时候,默认是从左往右开始查找符合参数要求的索引,如果找到,则返回对应的索引值,如果没找到,或是不存在这个值的话,则返回-1。两个参数的时候,表示从第二个参数所示的索引位置开始向后找,如果找到,就返回对应的索引值,如果找不到,则返回-1。
  • lastIndexOf() 在数组中查找某个元素的索引位置,如果找到,则返回对应的索引值,如果没找到,则返回-1。
    var nums = [100,200,300,400,500,100,200,300,400,500,100,200,300,400,500,100,200,300,400,500];
    var index = nums.lastIndexOf(300,10);
    console.log(index); // 7
    从下表索引为10的位置开始倒着找第一个出现300的下表索引(但下表索引还是从左以0开始)。
    
  • join()将数组中的元素连接成字符串,没有参数的时候,默认是以逗号进行连接。
    var str = [1,2,3,4,5];
    var nums = str.join();//1,2,3,4,5
    var nums = str.join("");//12345
    var nums = str.join(" ");//1 2 3 4 5
    var nums = str.join("|");//1|2|3|4|5
    console.log(typeof nums);//string
    
  • valueOf()
    var arr = [10,20,30,40];
    console.log(arr);//[10,20,30,40]
    console.log(arr.valueOf()); // [10,20,30,40] 数组本身的值
    console.log(arr.toString());  // 10,20,30,40 与join()没有参数是一样的
    
  • slice()从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始。
    var nums = [10,20,30,40,50,60];
    var result =  nums.slice(1,4);//从start开始截取,截取到end结束,end取不到,返回值是截取的数组中的元素组成的新数组,原数组不变
    console.log(result);//[20,30,40]
    
  • splice() 删除或替换当前数组的某些项目,参数有start,deleteCount,options(要替换的项目),即开始位置(下标),删除元素的个数,要替换的元素。两个参数的时候,表示截取。三个参数的时候,相当于替换,是将原来的值剪切掉之后,换成新的数据。
    var arr = ["abc","mmm","ccc","kkk","ppp","www","true"];
    var result =  arr.splice(1,3);//从第一个参数所示的位置开始截取,截取第二个参数所示的个数的数组元素,返回值就是截取出来的数据
    console.log(arr); //["abc", "ppp", "www", "true"]
    console.log(result);//["mmm", "ccc", "kkk"]
    
    var arr = ["abc","mmm","ccc","kkk","ppp","www","true"];
    var result = arr.splice(1,3,"hhh",100,200,false,undefined);
    console.log(arr);//["abc", "hhh", 100, 200, false, undefined, "ppp", "www", "true"]
    console.log(result);  // ["mmm", "ccc", "kkk"]返回值就是剪切出来的内容
    
  • reverse()翻转数组
    var arr = [100,200,300,400,500,600,700,800,900];
    arr=  arr.reverse();  // 反转数组,原理和原来的for循环是一样的
    console.log(arr);
    
  • sort()排序,是按照字符的ASCII码进行排序列
    var nums = [10,20,30,12,102,123,35,69];
    nums=  nums.sort(function (a,b){
      return -(a-b);
    });
    console.log(nums);//[123, 102, 69, 35, 30, 20, 12, 10]
    
    var nums = [10,20,30,12,102,123,35,69];
    nums=  nums.sort(function (a,b){
      return a-b;
    });
    console.log(nums);//[10, 12, 20, 30, 35, 69, 102, 123]
    
    sort()从小到大排序比较(看return返回值是大于0还是小于0进行判断排序)
     // a-b  如果是大于0的话 b排在前面,也是交换两者的位置
     // a-b  ==0的话,岀位置不变
     // a-b  小于0的话 a排在前面,也是交换两者的位置
    var nums = [10,20,30,40,50,60,70,80,90,100];
    forEach()遍历数组的每一项
    nums.forEach(function(item,index){
      console.log(index+"===="+item);
    })
    
  • filter()过滤数组
var result = nums.filter(function (item,index){
    if(item>60){  // 将大于60的过滤出去,留下符合条件的也就是小于等于60
        return false;
    }
    return true;
});
console.log(result);//[10, 20, 30, 40, 50, 60]