JS.DAY08.笔记

127 阅读4分钟

一、数组的常用方法

  1. join() 把函数转为字符串,参数是符号
       var arr = [8,1,4,6,7,5,7,5,4,8,7,4]
        // join()把数组变为字符串
        arr.join("")
        console.log(arr)//[8, 1, 4, 6, 7, 5, 7, 5, 4, 8, 7, 4]
  1. includes() 判断函数中是否存在某个值 返回值是布尔值
        var arr = [8,1,4,6,7,5,7,5,4,8,7,4]
        // includes()判断数组中是否存在某个值
        console.log(arr.includes(4));//true
  1. indexOf() 判断数组中是否存在某个值 返回的是第一次出现的下标
        // indexOf() 判断数组中是否存在某个值,返回第一次出现的下标
        var arr = [8,1,4,6,7,5,7,5,4,8,7,4]
        console.log(arr.indexOf(4)) //2
  1. lastIndexOf() 判断数组中是否存在某个值,返回最后一次出现的下标
        // lastIndexOf()判断数组中是否存在某个值,返回最后一次出现的下标
        var arr = [8,1,4,6,7,5,7,5,4,8,7,4]
        console.log(arr.lastIndexOf(4));//11

5.concat() 拼接数组,返回一个新的数组 可以有多个参数

        //concat() 拼接数组 返回一个新数组
        var arr = [8,1,4,6,7,5,7,5,4,8,7,4]
        var arr2 = ["a","b","a"]
        var arr3 = [];
        var x = arr3.concat(arr,arr2)
        console.log(x);// [8, 1, 4, 6, 7, 5, 7, 5, 4, 8, 7, 4, 'a', 'b', 'a']

6.slice()截取数组中的值 两个参数 第一个为截取开始的角标,第二个为结束的角标,注意包前不包后! 返回值为一个新的数组。

        // slice() 截取数组中的某个值 (截取开始的角标,结束的角标) 包前不包后 返回一个新的数组
        var arr = [8,1,4,6,7,5,7,5,4,8,7,4]
        var arr4 = arr.slice(3,7)
        console.log(arr4);//[6, 7, 5, 7]

7.splice() 删除 替换 查找 新增


        //splice() 删除 替换 查找 新增  (i, 删除的个数,插入的值) 1 在任意位置插入数据 2 删除 3 替换
        // 会改变原来的数组
        // 用法一、 在任意位置插入数据
        var arr = [1,2,3,4,5]
        arr.splice(2,0,"a","b","c") //第二个角标开始插入值
        console.log(arr);//[1, 2, 'a', 'b', 'c', 3 , 4 , 5]
        // 用法二、 删除
        arr.splice(1,2)//角标2开始删除,删除两个值
        console.log(arr)//[1, 'b', 'c', 3, 4, 5]
        // 用法三、替换 本质上就是先删除在新插入值
        arr.splice(2,3,"A","B","C")
        console.log(arr)// [1, 'b', 'A', 'B', 'C', 5]

8、基本数据类型可以通过typeof来判断 Array.isArray()用来判断是不是数组

二、数组的迭代方式

  1. foEach(function(v,i,arr){ }) 遍历数组
        // 数组的迭代方式
        // forEach()遍历数组
        // 一个匿名函数
        var arr = [12,1,3,4,5,4,5]
        // 匿名函数的参数v 数组的值 i 角标 arr 数组自己 
        arr.forEach(function(v,i){
            console.log(v);
        })

2.sort(function(a,b){return a - b}) 数组升序排序

        var arr = [9,5,7,8,6,11,8,1,7,0]
        // sort()排序 默认是按照ASCII码升序
        arr.sort(function(a,b){
            return a - b;//升序
        })
        console.log(arr);//[0, 1, 5, 6, 7, 7, 8, 8, 9, 11]

3.sort(function(a,b){retun b -a}) 数组降序排序

        var arr = [9,5,7,8,6,11,8,1,7,0]
        arr.sort(function(a,b){
            return b - a;//降序
        })
        console.log(arr)//[11, 9, 8, 8, 7, 7, 6, 5, 1, 0]
  1. map(function(v,i,arr){}) 改变数组中的值,返回一个新的数组 必须return
        var arr = [1,2,3,4,5,6,7,8,9]
        // 改变数组中的值 必须return
        var arr2 = arr.map(function(v,i,arr){
            return res = v + 1;
        })
        console.log(arr2);// [2, 3, 4, 5, 6, 7, 8, 9, 10]

5.filter(function(v,i,arr){}) 过滤器,找到满足条件的值,返回一个新的数组

        //filter(function(v,i,arr){})  过滤器,找到满足条件的值,返回一个新的数组
        var arr = [1,4,7,3,2] ;
        var res = arr.filter(function (v) {  
            return v > 2
        })
        console.log(res);//[4, 7, 3]

6.every(function(v,i){}) 判断数组中是不是每一个值都满足条件

        var arr = [10,40,70,38,26] ;
        var res = arr.every(function (v) {  
            return v > 60
        })
        console.log(res)//false

7.some(function(v,i){}) 判断数组中有没有满足条件的值

        //some(function(v,i){})  判断数组中有没有满足条件的值
        var arr = [10,40,70,38,26] ;
        var res = arr.some(function (v) {  
            return v > 60
        })
        console.log(res);//true

三、回调函数

  1. callback 把一个函数当做另一个函数的参数
        // 回调函数 callback
        // 把一个函数做另一个函数的参数

        arr = [0,1,2,3,4];
        //封装一个循环的递归函数
        // 参数 :arr 为一个数组,fn是一个函数!!!必须传入一个函数!
        function xunHun(arr,fn){
            for(i = 0;i<arr.length;i++){
            fn()
            }
        }
        xunHun(arr,function(){
            console.log(6555)
        })