javaScript学习笔记(三)数组篇

数组的定义和基本使用(简介和定义、数组类型的检测)
数组的常用方法
数组的算法(遍历相关算法、数组去重和随机样本、冒泡排序、二位数组)
认识引用类型(什么是引用类型、深克隆和浅克隆)

1、简介和定义

    三种定义数组的方式
    var arr1 = [22, 4, 5, 556, 55] //定义数组方法1
    var arr2 = new Array('22', 22, 55, 88) // 定义数组方式二(构造器)
    var arr3 = new Array(4)// 定义方式3  得到的是4个undefined
    console.log(arr1, arr2, arr3)

    访问数组项
     console.log(arr1[1]) // 4
     console.log(arr1[0])// 22
     console.log(arr2[1])// 22
     console.log(arr2[100000]) // undefined

   数组的长度
   console.log(arr1.length)//5
   
   更改数组项
   arr1[0]++
   arr1[1] = 'hihi'
   arr1[5] = '120'
   console.log(arr1)  //[23, "hihi", 5, 556, 55,120]

   遍历数组项目
    for (var i = 0; i < arr1.length; i++) {
        console.log(arr1[i])
    }

2、数组类型的检测(Array.isArray()方法可以用来检测数组)

注意:typeof 检测数组是object类型

    var obj = { name: '赵云', sex: '男' }
    var arr4 = [3, 4, 4, 5, 6]
    console.log(Array.isArray(obj))  //false
    console.log(Array.isArray(arr4)) //true

3、数组的常用方法

push() 在尾部插入
pop() 在尾部删除
unshift() 在头部添加
shif() 在头部删除
splice() 方法
slice() 方法(string可使用)
join和split方法 (数组的join()方法可以使数组转为字符串;字符串的split()方法可以使字符串转为数组。)
concat()(合并连接多个数组)
reverse() 数组反转
indexOf和includes()

头尾操作的方法

        // push()   在尾部插入
        // pop()  在尾部删除
        // unshift()  在头部添加
        // shif()  在头部删除
        var arr5 = [1, 2, 3, 5]
        // 注意:方法就是打点调用的函数,所以是数组打点调用他们
        arr5.push(12) // [1,2,3,5,12]
        arr5.pop() //[1,2,3,5]  
        arr5.unshift(99, 45)// [99,45,1,2,3,5]
        arr5.shift() // [45,1,2,3,5]

splice() 方法

        var spliceArr = [23, 434, 56, 7, 8, 9]
        spliceArr.splice(1, 2, '添加1', '添加2')
        console.log(spliceArr)  //[23, "添加1", "添加2", 7, 8, 9]
        spliceArr.splice(1, 3)
        console.log(spliceArr)  //[23, 8, 9]
        spliceArr.splice(2, 0, '添加')
        console.log(spliceArr)  //[23, 8, "添加", 9]

slice() 方法(string可使用)

        var sliceArr = [3, 4, 5, 6, 7]
        console.log(sliceArr.slice(1, 3))//[4, 5]

join和split方法 (数组的join()方法可以使数组转为字符串;字符串的split()方法可以使字符串转为数组。)

        var str = '2060/20/30'
        var arr6 = [12, 34, 56, 77]
        console.log(arr6.join() === arr6.toString()) //true
        console.log(arr6.join('*')) //12*34*56*77
        console.log(str.split('/')) //["2060", "20", "30"]

concat()(合并连接多个数组)

        var ar = [1, 3, 3, 4, 5]
        var ar1 = [3, 4, 5, 6]
         var ar2 = [3, 4, 5, 6]
        console.log(ar.concat(ar1, ar2  )) // [1, 3, 3, 4, 5, 3, 4, 5, 6,3, 4, 5, 6]

reverse() 数组反转

        var reverseArr = [1, 2, 3, 4, 6]
        console.log(reverseArr.reverse()) //[6, 4, 3, 2, 1]

indexOf和includes()

        // indexof()方法的功能是搜索数组中的元素,并返回它所在的位置,如果元素不存在,则返回 - 1
        // includes()方法的功能是判断一个数组是否包含一个指定的值,返回布尔值
        var indeArr=[2,3,4,5,6,7]
        console.log(indeArr.indexOf('6'))  // 1
        console.log(indeArr.includes(4))  //true

sort() 排序()


4、遍历相关算法

累加器

        var scoreArr = [1, 3, 4, 5, 65, 6, 7]
        var sun = 0
        for (var i = 0; i < scoreArr.length; i++) {
            sun += scoreArr[i]
        }
        console.log(sun) //91

求一组数组的最大值和最小值

        var arr = [22, 3, 44, , 55, 667, 56, 78, 899]
        var min = arr[0]
        var max = arr[0]
        for (var i = 1; i < arr.length; i++) {
            if (min < arr[i]) {
                min = arr[i]
            }
            if (max > arr[i]) {
                max = arr[i]
            }
        }
        console.log(min, max)

数组去重

        var arr1 = [2, 4, 4, 5, 5, 62, 4, 56, 4]
        var empey = []
        for (var i = 0; i < arr1.length; i++) {
            if (!empey.includes(arr1[i])) {
                empey.push(arr1[i])
            }
        }
        console.log(empey)
        for (var i = 0; i < arr1.length; i++) {
            for (var j = i + 1; j < arr1.length; j++) {
                if (arr1[i] == arr1[j]) {
                    arr1.splice(j, 1)
                }
            }
        }
        console.log(arr1)

数据样本(在一组数种随机三(n)个值)

        var arr2 = [2, 1, 4, 5, 6, 7]
        for (var i = 0; i < 3; i++) {
            var n = parseInt(Math.random() * arr2.length);
            console.log(arr2[n])  // 随机三位
            arr2.splice(n, 1)
        }
        console.log('-----------------------------')

冒泡排序(经典算法)

   var arr3 = [6, 2, 9, 3, 8, 1]
           var len = arr3.length;
        for (var i = 1; i < len; i++) {
            console.log(1)
            for (var j = 0; j < len - i; j++) {
                if (arr3[j] > arr3[j + 1]) {        //相邻元素两两对比
                    var temp = arr3[j + 1];        //元素交换
                    arr3[j + 1] = arr3[j];
                    arr3[j] = temp;
                }
            }
        }
        console.log(arr3, '444')

        var arr4 = [1, 2, 3, 58, 689, 7, 4]
        for (var i = 1; i < arr3.length; i++) {
            for (var k = arr3.length - i - 1; k >= i; k--) {
                if (arr3[k] > arr3[k + 1]) {
                    var temp = arr3[k]
                    arr3[k] = arr3[k + 1]
                    arr3[k + 1] = temp
                }
            }
        }
        console.log(arr3)

5、二维数组

        var matrix = [
            [1, 2, 34, 4, 888],
            [2, 3, 4, 56, 5000],
            [2, 3, 4, 56],
        ]

        for (var i = 0; i < matrix.length; i++) {
            for (var j = 0; j < matrix[i].length; j++) {
                console.log(matrix[i][j])
            }
        }

5、基本类型和引用类型

                          举例                             当var a=b变量传值时        当用==比较时
     基本类型值    Number String Boolean undefined null     内存种产生新的副本          比较值是否相等
     引用类型      对象、数组                                内存种不产生新的副本,      比较内存地址是否相同,
                                                           而是让新变量指向同一个对象   就是比较是否同一个对象
       var a=3
       var b=a
      a++
      console.log(a,b) //4 3

      var a=[1,2,3,4,5,[1,5488]]
       var b=a
       console.log(a==b) //true
       console.log([1,2,3,4,5,[1,5488]]==[1,2,3,4,5,[1,5488]]) //false
        

5、深克隆和浅克隆—浅克隆

      var copyArr=[1,2,3,4,5,[1,5488]]
      var  reslut=[]
      for(var i=0;i<copyArr.length;i++){
          reslut.push(copyArr[i])
      }
      console.log(reslut==copyArr) // false
      console.log(reslut[5]==copyArr[5])  //true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值