数组笔记

(一)数组的创建

 Let arr=[]
 Let arr = new Array()
    两种区别:
       用new关键字,需要单独开辟一个存储地址,比较耗资源,耗内存
       字面量的方式直接在内存开辟一个存储字段,相对比较简单,也不耗资源
        new Array()有缺点,就是参数问题引起的重载
    优点:
        1.按照索引查询元素速度快 
        2、能存储大量数据 
        3、按照索引遍历数组方便
        4、不用定义大小,可以随意的存储值,,也可以为空,且访问很方便,比较灵活
        5、 任何类型的数据,都可以放入到数组里

    缺点:   
        1、根据内容查找元素速度慢 
        2、数组的大小一经确定不能改变。 【修改后返回的数组其实是单独开辟的空间,原始数组并未被改变】
        3、数组只能存储一种类型的数据 
        4、增加、删除元素效率慢 
        5、未封装任何方法,所有操作都需要用户自己定义。
        6、安全性能太低,后期可以随意改变数组的值

(二)数组自带属性
    Constructor.  //返回创建数组对象的原型函数
    Length //返回数组对象的长度
    关于数组的length属性:    
       1.该属性不是只读属性,该属性可读可写,可以通过这个属性,向数组的末尾添加和删除元素
       2.如果将length的属性设置为大于数组长度的值,且没有赋值,那么新增的每一项都是undefined 
        Prototype. //可以增加数组的原型方法和属性     

(三)检测是否为数组
    Instanceof  用于判断一个变量是否是某个对象的实例
    Var arr = [1,2,3]    
    arr   instanceof Arrar.   //true
    isArray() 用于判断一个变量是否是数组
    let arr = [1,2,3,4,5,2]
    Array.isArray(arr). //true
(四)数组的方法
    1 arr.push() 从后面添加元素,返回值为添加完后的数组的长度
        let arr = [1,2,3,4,5]. arr.push(5) // [1,2,3,4,5,5]

    2 arr.pop() 从数组的后面删除元素,返回值是删除的元素
        let arr = [1,2,3,4,5]. arr.pop()  //返回5 Arr = [1,2,3,4]

    3 arr.shift() 从前面删除元素,只能删除一个 返回值是删除的元素
        let arr = [1,2,3,4,5]. arr.shift() // 返回1 Arr = [2,3,4,5]

    4 arr.unshift() 从前面添加元素, 返回值是添加完后的数组的长度
        let arr = [1,2,3,4,5] arr.unshift(2). //返回长度 6 Arr = [2,1,2,3,4,5]

    5 arr.splice(i,n) 删除从i(索引值)开始的那个元素,返回值是删除的元素 【注:此方法会对原数组进行修改】
        参数: i 开始位置的索引值      n 个数
        let arr = [1,2,3,4,5] arr.splice(2,2) //返回[3,4] Arr = [1,2,5]

    6 arr.concat() 连接两个数组 返回值为连接后的新数组,原始数组不被修改
        let arr = [1,2,3,4,5] arr1=arr.concat([6,7]))  //返回[1,2,3,4,5,6,7] Arr=[1,2,3,4,5] arr1=[1,2,3,4,5,6,7]

    7 str.split() 将字符串转化为数组
        let str = ‘123456' str.split('') //返回["1", "2", "3", "4", "5", "6"]

    8 arr.sort() 将数组进行排序,返回值是排好的数组,默认是按照最左边的数字进行排序,不是按照数字大小排序的,见例子。
        let arr = [2,10,6,1,4,22,3]                     console.log(arr.sort())   // [1, 10, 2, 22, 3, 4, 6]
        let arr1 = arr.sort((a, b) =>a - b)                 console.log(arr1)   // [1, 2, 3, 4, 6, 10, 22]
        let arr2 = arr.sort((a, b) =>b-a)   console.log(arr2)  // [22, 10, 6, 4, 3, 2, 1]

    9 arr.reverse() 将数组反转,返回值是反转后的数组
        let arr = [1,2,3,4,5] arr.reverse()//返回[5,4,3,2,1] Arr =[5,4,3,2,1]

    10 arr.slice(start,end)    用来切割数组,返回值是切出来的数组,但是并不影响原数组
        注意:1.传递一个参数的时候,是从参数位置截取到数组的末尾
             2.传递两个参数的时候,是从起始位置,截取到结束位置,但是不包含结束位置
        let arr = [1,2,3,4,5]
            console.log(arr.slice(4)) //返回[5] Arr =[1,2,3,4]
            console.log(arr.slice(2,2))   // [3,4]  Arr =[1,2,5]
            console.log(arr)    //  [1,2,3,4,5]

    11 arr.splice()    
        let arr = [1,2,3,4,5] arr.splice(2,2) //返回[3,4] Arr = [1,2,5]
         注意:1.传递一个参数的时候,是从参数位置截取到数组的末尾,返回的是删除项
              2.传递两个参数的时候,是从起始位置,截取到结束位置,包含结束位置
              3.传递三个参数,看中间的数组是否是0,如果是则是在起始位置添加数值,如果中间是正整数,则是在起始位置之后用第三个参数的值,来替换相对应长度的数据
        let arr = [1,2,3,4,5]
            console.log(arr.splice(2)) //返回[3,4,5] Arr =[1,2]
            console.log(arr.splice(1,3)) //返回[2,3,4] Arr =[1,5]
            console.log(arr.splice(1,2,6))//返回[2, 3] Arr =[1, 6, 4, 5]

(五)数组与字符串的相互转化
        数组转字符串
            let arr = [1,2,3,4,5]
            1.arr.join(). //“1,2,3,4,5"
            2.arr.toString(). //"1,2,3,4,5"
            3.arr.toLocaleString(). //“1,2,3,4,5”
            如果数组中的某一项是null | undefined 那么该返回值在字符串中以空字符串展示 

        字符串转数组
            let str = "abc,abcd,aaa";
            Let arr = str.split(‘,'). //[abc,abcd,aaa]
            let str1 = "helloworld";
            Let arr = str1.split(‘'). //["h", "e", "l", "l", "o", "w", "o", "r", "l", "d”]

(六)元素在数组中的位置
        1 arr.indexOf() 查找某个元素的索引值,若有重复的,则返回第一个查到的索引值若不存在,则返回 -1
            let arr = [1,2,3,4,5,2]
            let arr1 = arr.indexOf(2)
                console.log(arr1)  // 1
            let arr2 = arr.indexOf(9)
                console.log(arr2)  // -1
        2 arr.lastIndexOf()   和arr.indexOf()的功能一样,不同的是从后往前查找

            let arr = [1,2,3,4,5,2]
            let arr1 = arr.lastIndexOf(2)
                console.log(arr1)  // 5
            let arr2 = arr.lastIndexOf(9)
                console.log(arr2)  // -1

    3.find()方法用于找出第一个符合条件的数组元素【es6】
            [1, 4, -5,-2,10].find((n) => n < 0). //-5
                find方法的回调可以接受三个值,【当前的值,当前位置,原数组】
            [1, 4, 5,10].find(function(value, index,arr){
                retrun value > 9 //10
            })

    4.findIndex()方法 ,返回符合条件的数组元素的索引,如果没有找到,则返回-1【es6】
        [1, 4, -5,-2,10].findIndex((n) => n < 0). //2
            find方法的回调可以接受三个值,【当前的值,当前位置,原数组】
        [1, 4, 5,10].findIndex(function(value, index,arr){
            retrun value > 9 //3
        })
            这两个方法都可以接受第二个参数,用来绑定回调函数的this对象【es6】
        [1, 4, -5,-2,10].find((n) => n < 0)
            find方法的回调可以接受三个值,【当前的值,当前位置,原数组】
            function f(v){
                Return v >this.age;
            }
            let person = {age:20,name:”john”}
            [10,12,20,26].find(f, person) //-5

    5.includes方法返回一个 布尔值,表示某个数组是否包含给定的值【es6】
         这个方法接受两个参数,要查找的元素,开始查找索引的位置
            [1,2,3].includes(2) //true || [5,6,7].includes(2) //false
            [1, 2, 3].includes(3, 3);  // false ||. [1, 2, 3].includes(3, 2);  //true
            [1, 2, 3].includes(3, -1);  //true

    6.every()   判断数组中是否所有的元素都符合条件【every:一假即假:】【es6】
        Var arr =[1,2,3,4,18]
            Var every = arr.every(function(){
            return obj >17 //false
        })
        Var arr =[18,19,20]
            Var every = arr.every(function(){
            return obj >17 //true
        })
    7.some()   判断数组中是否所有的元素都符合条件【some:一真即真 】【es6】
        var arr=[1,2,3,4,18]
        Var arr =[1,2,3,4,18]
        Var some = arr.some(function(){
            return obj >17 //true
        })
    Var arr =[18,19,20]
        Var some = arr.some(function(){
        return obj >17 //true
    })

8.isArray()   判断元素是否是数组【es6】
     var arr=[1,2,3,4,18]
        if( Array.isArray( arr ) ){
            Console.info(‘2222’)  //2222
        }
posted @ 2020-02-20 19:19  duqianqian  阅读(94)  评论(0编辑  收藏  举报