js中数组的方法

一、ECMScript 3中数组的操作方法

    1.push和pop

      push在数组的末尾添加一个或者多个元素,返回新数组的长度。所以不能链式操作
      pop删除数组的最后一个元素,返回它删除的值元素

var arr = [1, 2, 3, 4, 5];
var arr1=arr.push(6);
console.log(arr1)//6
console.log(arr)//[1,2,3,4,5,6]
var arr2 = arr.pop();
console.log(arr2)//6
console.log(arr);//[1,2,3,4,5]

 

   2.unshifh和shift

   unshift是在数组头部添加一个或多个元素。如果一次性传入多个参数,多个参数按照按照原先的位置直接加到数
   组中。返回新数组的新数组的长度。
   shift:删除数组的第一个元素,并返回删除的元素

var arr = [1, 2, 3, 4, 5];
var arr1=arr.unshift(6);
console.log(arr1)//6
console.log(arr)//[6,1,2,3,4,5]
var arr2 = arr.unshift();
console.log(arr2);//6
console.log(arr);//[1,2,3,4,5]

  3.concat

   concat 连接 该方法的作用是给数组连接新成员 参数有任意个,都是会被拼接到新数组中的成员 如果参数中有数组 会把这个数组拆开

    返回值是连接完毕的新数组,它不会改变原来的数组
 var arr = [1];
 var arr1 = [2, 3];
  // 把arr 和 arr1 连接起来
  var arr2 = arr.concat(10, 20, 33, arr1);
  console.log(arr2);//[1,10,20,33,2,3]

  4.reverse

    将一个数组逆序 返回值是原数组 也会影响到原数组

 var arr = ["a", "b", "c", "d", "e"];
 var arr1 = arr.reverse();
 console.log(arr);//["e", "d", "c", "b", "a"]
 console.log(arr1);//["e", "d", "c", "b", "a"]

5.sort

  排序

  该方法只适用于内部成员都是数字的情况
       var arr = [1, 11, 44, 4, 5, 67, 6, 78, 345, 89, 8];
        //如果不传递参数 会按照第一位数的数字从小到大排序
        arr.sort();
        console.log(arr);//[1, 11, 345, 4, 44, 5, 6, 67, 78, 8, 89]
        //如果传递参数 参数是一个函数 该函数有两个参数 a b 如果返回a - b 则升序排列 如果 
        返回b - a则降序排列
        arr.sort(function(a, b) {
            return b - a;
        });
        console.log(arr);//[345, 89, 78, 67, 44, 11, 8, 6, 5, 4, 1]

6.join

     该方法用于将数组以参数作为间隔转换成字符串
      参数默认是 ","
 var arr = [1, 2, 3, 4, 5, 6, 7, 8];
 console.log(arr.join(""));//12345678
        

7.slice(start,end)

   该方法用于截取一段数组中的成员
                start: 开始截取的下标位置
                end: 结束截取的下标位置(不包含)
                左闭右开:包含左侧 不包含右侧
               可以接收一个参数 表示从start截取到最后
            可以不接收参数 表示全部截取
            参数可以是负数 表示从后往前数(负数是从-1开始)
            如果第一个参数比第二个参数要大 截取的是空数组

 

  var arr = [1, 2, 3, 4, 5, 6, 7, 8];
  var arr1 = arr.slice(2, 6); // [3, 4, 5, 6]
   var arr2 = arr.slice(2);  // [3, 4, 5, 6, 7, 8]
   var arr3 = arr.slice(); // [1, 2, 3, 4, 5, 6, 7, 8]
   var arr4 = arr.slice(0, -1);  // [1, 2, 3, 4, 5, 6, 7];
    var arr5 = arr.slice(-4, -1); // [5, 6, 7]
    var arr6 = arr.slice(-4);  // [5, 6, 7, 8]

 

8.splice

     splice(pos, num, ...) 该方法用于操作数组
                pos: 表示操作数组的位置
                num: 表示要删除几项
                之后的每一个成员表示要向pos位置插入的成员
 var arr = [1, 2, 3, 4, 5, 6, 7, 8];
        //1 将3移除
        var result = arr.splice(2, 1);
        console.log(arr);
        console.log(result);
       // 2 将3替换成9
        var result = arr.splice(2, 1, 9);
        console.log(arr);
        console.log(result);
        //3 在5前面插入5个1
        var result = arr.splice(4, 0, 1, 1, 1, 1, 1);
        console.log(arr);
        console.log(result);
        //4 当都只传递1个参数时 默认从该位置往后都移除
        var result = arr.splice(1);
        console.log(arr);
        console.log(result);

 二、ECMScript 5中的数组方法

 1、forEach()  //遍历
该方法从头到尾遍历数组,为某个元素调用指定的函数。传递函数包括三个参数(数组元素、元素索引、数组本身
),如果只关心数组元素的值,可以只传一个参数。
注意:无法在所有元素的都传递给调用函数之前提前结束。也就是没有像for中一样的break语句。如果要提交终止,可以
把forEach()方法放到try块中。如果forEach()调用的函数抛出forEach.break异常,循环提前结束

var data = [1,2,3];
var sum = 0;
data.forEach(function(value){
  sum+=value;
});
console.log(sum);  //6
 
var data = [10,20,30];
data.forEach(function(v,i,a){
  a[i] = v*2;
});
console.log(data) //[20, 40, 60]

2、map()     //映射
定义:将调用的数组的每个元素传递给指定的函数,并返回一个新数组,它包含该该函数的返回值
注意:传递给map的函数应该有返回值,返回的是新数组,不修改调用的数组。

 

var data3 = [1,2,3];
var b = data3.map(function(val){
   return   val*10;
});
console.log(data3);  //[1,2,3]     不改变原数组
console.log(b);      //[10,20,30]  新数组

3、filter() //过滤
定义:返回的数组元素是调用的数组的一个子集,就传递的函数是用来做逻辑判定的,返回true,传给给判定函数的元素就是这个子集的成员。

 

var data4 = [1,2,3,4,5];
var b2 = data4.filter(function(val){
  return val<3;
});
console.log(b2);     //[1,2]
console.log(data4);  //[1,2,3,4,5] 不改变原数组  
 
var b3 = data4.filter(function(val,i){
  return i%2;
});
console.log(b3);     //[2,4] 返回索引为奇数的元素组成的数组

4、every() 

 

  every 该方法也是断言方法 用于判定数组中是否有存在符合某种条件的成员
                接收一个函数作为参数
                    函数的第一个参数是成员 
                    函数的第二个参数是索引
                    函数的第三个参数是数组本身
                    函数要有返回值 通常是符合某种条件的判定表达式
                返回值是一个布尔值 只要有任何一个成员不符合函数的描述 就返回假 都符合才返回真
 var arr = [1, 2, 3, 4, 5, 6, 7];

        var result = arr.every(function(value, index, self) {
            return typeof value === "number";
        });
        console.log(result);//true

5.some()

some 该方法属于断言方法 用于判定数组中是否有存在符合某种条件的成员
                接收一个函数作为参数
                    函数的第一个参数是成员 
                    函数的第二个参数是索引
                    函数的第三个参数是数组本身
                    函数要有返回值 通常是符合某种条件的判定表达式
                返回值是一个布尔值 只要有任何一个成员符合了函数的描述 就返回真 都不符合才返回假
     var arr = [1, 2, 3, 4, 5, 6, 7, 8];
         var result = arr.some(function(value, index, self) {
            console.log(value);
            return typeof value === "string";
         });
         console.log(result);//false

 

6、reduce()
定义:使用指定的函数将数组元素进行组合,生成一个单值。参数一是执行简化操作的函数,参数二是传给简化函数的初始值。

注意:一旦确认之后,就停止遍历数组了。

var data5 = [1,2,3];
var sum = data5.reduce(function(x,y){
  return  x+y;
},0);
console.log(sum);  //6
 
var product = data5.reduce(function(x,y){
  return  x*y;
},100);
console.log(product);  //600

7、indexOf()和lastIndexOf()

定义:搜索整个数组中具有给定值的位子,返回找到第一个元素的索引,如果没有找到就返回-1;indexOf()是从头找到尾,lastIndexOf()正好相反
注意:不接受函数作为参数,第一个参数是需要搜索的值,第二个参数是可选的,表示从哪里搜索,可以是负数,表示相对数组末尾的偏移量。
说明:字符串也有这两个方法,功能类似。

var data6 = [1,2,3,3,4,3,5];
console.log(data6.indexOf(3)); //2 第一个3的索引是2

 8.fill()

 

fill 用于填充数组 接收3个参数 
                第一个参数是 填充数
                第二个参数是 填充的起始位置(可选)
                第三个参数是 填充的结束位置(可选)
 var arr = [1, 2, 3, 4, 5, 6];
        // 将数组的每一个成员都填充为0 
        arr.fill(0); 
        // 将数组的从第二个开始往后都填充为0 
         arr.fill(0, 1);
        // 将数组的从第二个开始到第四个填充为0
        arr.fill(0, 1, 4);
        console.log(arr);

三、ECMScript 6中的数组方法

1.find()

find 用于查询数组中的成员 接收一个函数作为参数
   函数有三个参数
  函数的第一个参数是成员
     函数的第二个参数是索引
     函数的第三个参数是数组本身
   该函数返回一个条件表达式
     返回符合函数条件表达式描述的第一个数组成员 如果找不到 返回undefined
       var arr=["12","23","345","45"]
                var result = arr.find(function(value,index,self){
                        return value.indexOf(23) !=-1;
                })
                console.log(arr)//["12","23","345","45"]
                 console.log(result)//23

2.findIndex()

      findIndex 用于查询数组中的成员的索引 接收一个函数作为参数
                函数有三个参数
                    函数的第一个参数是成员 
                    函数的第二个参数是索引
                    函数的第三个参数是数组本身
                    该函数返回一个条件表达式 
                返回符合函数条件表达式描述的第一个数组成员的索引 如果找不到 返回 -1
     
     var arr = ["张三", "李四", "王五", "赵六", "田七"];
        
        var usernameIndex = arr.findIndex(function(value, index, self) {
            return value.indexOf("五") != -1;
        });
         console.log(usernameIndex)//2

3.copyWithin()

copyWithin 负责数组的内部复制 接收三个参数
                第一个表示操作位置
                第二个表示复制的开始位置(包含)
                第三个表示复制的结束位置(不包含)
                操作结果: 从第二个参数开始复制到第三个参数 再将复制的成员 从第一个参数位置开始替换
    
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
        arr.copyWithin(0, 5, 7);
        console.log(arr);//[6, 7, 3, 4, 5, 6, 7, 8, 9]

4.Array.of() 

该方法用于定义数组
与new Array()不同的是为一位数字时是就表示数组内容,而new Array()方法表示数组长度
var arr = Array.of(5,6,78,9)
console.log(arr);
var arr1 = Array.of(5);
var arr2 = new Array(5):

5.Array.from()

 

该方法用于将类数组对象 转为 数组

 

posted @ 2019-09-21 10:59  ZL_light  阅读(547)  评论(0编辑  收藏  举报