数组API

Posted class1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组API相关的知识,希望对你有一定的参考价值。

     ES5中数组新增API:

      1. indexOf

            作用:检测当前数据是否在数组中存在;

            特点:如果存在返回相对应的下标,如果不存在则返回-1;

                     如果数组中存在多个需要判断的这个数据,则返回最近的这个数据的下标;

                    可以传递两个参数,第二个参数指定查询的起始位置;

            示例:

                 var arr = [10,20,30,40,50,30];
                 var index1= arr.indexOf(30);  
                 var index2 = arr.indexOf(80);
                 var index3 = arr.indexOf(30,3);
                console.log(index1);  //结果为2
                console.log(index2);  //结果为-1
                console.log(index3);  //结果为5

              
      2. lastIndexOf

            作用:检测当前数据是否在数组中存在;

            特点:如果存在返回相对应的下标,如果不存在则返回-1;

                     如果数组中存在多个需要判断的这个数据,则返回最后的这个数据的下标(也就是说它的查找方式是从右往左);

                    可以传递两个参数,第二个参数是指定查询的起始位置,然后从起始位置往左找;


            示例:

                 var arr = [10,20,30,40,50,30];
                 var index1= arr.lastIndexOf(30);  
                 var index2 = arr.indexOf(80);
                 var index3= arr.lastIndexOf(30,5);  
                 console.log(index1);  //结果为5
                 console.log(index2);  //结果为-1
                 console.log(index3);  //结果为5



     3. map

            作用:需要对数组中的数据做一些同一类型的操作时,可以用到map;

            特点:不会改变原数组,会有一个返回值, 返回值是一个新的数组;

                     map中除了有一个回调以外,还有第二个参数就是用来改变this指向的,此参数选用。
                            回调函数中的3个参数:
                                 item:数组中的数据
                                 index:数组中数据的下标
                                 array:当前遍历的数组

            示例:

                 var arr = [10,20,30,40,50];
    
                var newArr = arr.map(function(item,index,array)
                          console.log(item,index,array);//自己可以打印着看看
                          return item*=1.3;
                  )
    
                 console.log(arr);   //   [10,20,30,40,50]
                 console.log(newArr);  //  [ 13, 26, 39, 52, 65 ]

   4.   forEach

            作用:遍历;

            特点:没有返回值,不会改变原数组;

                     forEach中除了有一个回调以外,还有第二个参数 就是用来改变this指向的,此参数选用。

                            回调函数中的3个参数:
                                  item:数组中的数据
                                  index:数组中数据的下标
                                  array:当前遍历的数组

            示例:

                var arr = [10,20,30,40,50];
               var newArr  = []
               arr.forEach(function(item,index,array)
                     newArr.push(item*=1.3);
                     console.log(this);//当前this指向document,如果不改变this指向,则指向window
                  ,document)

            console.log(arr);// [10,20,30,40,50]
            console.log(newArr);//[ 13, 26, 39, 52, 65 ]




    注:forEach和map是不能被终止的  也就是说return  和break根本不会终止它们的循环       

 
 5.  filter

            作用:通过某种条件对数据进行过滤筛选;

            特点:返回一个匹配过滤条件的新数组,不会改变原数组;

                     filter中除了有一个回调以外,还有第二个参数 就是用来改变this指向的,此参数选用。

                            回调函数中的3个参数:
                                 item:数组中的数据
                                 index:数组中数据的下标
                                 array:当前遍历的数组

            示例:
                       var arr = [10,20,30,40,50];

                     var newArr = arr.filter(function(item,index,array)
                         console.log(this);//当前this指向document,如果不改变this指向,则指向window
                       return item>30;
                    ,document)
             
               
            console.log(arr);// [10,20,30,40,50]
            console.log(newArr);//[ 40,50 ]
   
  6.  reduce

            作用: 累积器;

            特点:返回一个匹配过滤条件的新数组,不会改变原数组;
                   
                  回调函数中的4个参数:
                                init:初始值,值为reduce函数的第二个参数
                                 current: 为数组中的当前值, 第一次为数组中下标为0的这个值 第二次为下标1的值  .....   
                                 index:数组中数据的下标
                                 array:当前遍历的数组

            示例:
                       var arr = [10,20,30,40,50];
                       var sum =  arr.reduce(function(init,current)
                         return current-init;
                        ,0)
                      console.log(sum);//30 ;sum的计算过程: sum=50-(40-(30-(20-(10-0))));



  7.reduceRight
     作用同reduce,唯一的不同是,reduceRight 是从右至左遍历数组的元素。


  8.some
      作用: 测试数组中是否有某元素通过 callback 函数测试;


       特点:如果 callback 函数返回值为 true 则表示通过测试(有一个通过测试,则为真);

         回调函数中的3个参数:
                                v:数组中的数据
                                i:数组中数据的下标
                                arr:当前遍历的数组


            let arr=[1,3,6,4,2]
            let someRes = arr.some((v, i, arr) =>
                    return v > 5
                 )
           console.log(someRes) ;//  true

9. every
      作用: 测试数组中是否全部元素通过 callback 函数测试;


      特点:如果 callback 函数返回值为 true 则表示通过测试(全部通过测试,则为真);

               回调函数中的3个参数:
                                v:数组中的数据
                                i:数组中数据的下标
                                arr:当前遍历的数组


            let arr=[1,3,6,4,2]
            let everyRes = arr.every((v, i, arr) =>
                    return v > 5
                 )
           console.log(everyRes) ;// false

 

以上是关于数组API的主要内容,如果未能解决你的问题,请参考以下文章

如何格式化要发布到 API 的数组数组?

如何从 API 声明数组来代替硬编码数组?

javadoc简易数组工具类文档(API)

JavaScript数组api简单说明

手把手搞懂JavaScript数组的常用API

数组API之数组操作(filtermapsomeeverysort)