不为别的,只为做一个连自己都羡慕的人

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都有返回值

posted @ 2019-09-09 20:49  升级打怪  阅读(284)  评论(0编辑  收藏  举报