zoukankan      html  css  js  c++  java
  • es5数组的api(了解)

    一、基础

    我下面的所有例子,都是用的是这个数组,所以先放在了前面

     var arr = [1, 5, 2, 3, 6, 7, 8, 5, 4, 1, 2, 3, 2, 2];

    1.arr.indexOf(v);

    • a.返回的是第一次出现的下标
    • b.两个参数。后面参数代表从那个下标开始查找
    • c.如果不存在,返回-1.
      eg: 数组的去重
            分析: 建立一个临时数组,用indexOf(),让传递进来的数组中的每一个元素与临时数组中的每一个元素进行比较,如果tempArr.indexOf(arr[i]) 为-1,则push到临时数组中。
            function norepeat(arr) {
                var tempArr = [];
                for (var i = 0; i < arr.length; i++) {
                    if(tempArr.indexOf(arr[i]) == -1) {   //用arr中的每一个元素与tempArr中的每一个元素进行比较,如果不相同,则放入临时的数组中。
                        tempArr.push(arr[i]);
                    }
                }
                  return tempArr;
            }
            console.log(norepeat(arr));

    2.arr.lastIndexOf(v);

    • a.从后往前找,返回的是倒着数的第一次出现的下标
    • b.接受两个参数,第二个参数,代表的是从哪个下标开始

    eg:

    检测数组中没有重复的数组项
            分析: 让indexOf从前往后找,lastIndexOf 从后往前找,如果从前往后找和从后往前找,返回的下标相同,则说明没有重复的选项
            for(var i=0;i<arr.length;i++) {
                if(arr.indexOf(arr[i])== arr.lastIndexOf(arr[i])) {
                    console.log(arr[i]);
                }
            }

    3.arr.forEach(function(value,index,arr){
      //arr 数组项
      //index 下标
      //arr 数组本身
    })
    注: forEach()没有返回值,必须要借助变量接收返回值

    eg:数组求和
    var sum = 0;
            arr.forEach(function(value,index,arr){
                // console.log(value);
                sum += value;

            })
            console.log(sum);

    4.arr.map(function(value,index,arr) {
      return value +1; //把数组项的每一项+1,然后映射到一个新数组,不影响原数组
    })
    //有返回值。

    eg:数组中的每一个值都加1

    var arr1 = [];
            arr1 = arr.map(function (value, index, arr) {
                return value + 1;
            })
            console.log(arr1);
            console.log(arr);

    5.arr.reduce(function(acc,cur,index,arr){
      //acc 累计器
      //value 数组的每一个值
      //index 下标
      // arr 数组本身

      return acc + value; //累加
      return acc * value; //累乘
      return acc / value; //累除
      return acc - value; //累减
    })

    注:每种求和求积,都要有一个初始值,好比,我们在求和的时候,sum的初始值为0,求积的时候,produce的初始值为1。总之,对于不同的计算有不同的初始值,而我们的reduce方法中,正好提供了一个累计器,在方法的底层,已经将每种计算的初始值设置好,我们只需要直接计算即可。

    6.arr.filter(function(value,index,arr) {
      return 过滤条件;
    })

    eg: 过滤小于5的数字

     res=arr.filter( function(value,index,arr) {
                return value < 5;
            })
            console.log(res);
     

    注:在map之后的m几个api中(包括map),每个api都有返回值

  • 相关阅读:
    Java 反射 Class类
    Java 反射 Class对象
    Java 集合 ArrayList和LinkedList的几种循环遍历方式及性能对比分析 [ 转载 ]
    Kubernetes 删除 namespace
    Rancher在Catalog中 使用Helm Chart安装应用
    asp.net core + log4net+exceptionles+DI
    Jenkins-Kubernetes-docker-自动发布
    Asp.Net Core 2.0 WebUploader FastDfs 文件上传 分段上传
    Centos7 安装并配置redis
    redis 配置文件详解
  • 原文地址:https://www.cnblogs.com/lxz123/p/11494154.html
Copyright © 2011-2022 走看看