JS-数组

82 阅读3分钟

数组

  数组:

    存放一些数据的集合

    也是引用数据类型(复杂数据类型)

      数据/对象/函数

数组和对象将来如何选择?
           示例:   
              商品的详情存放到某一个对象中, 比如: 商品名, 商品价格, 商品折扣, 商品描述....
               
              商品列表假设有 100个商品, 那么你就有100个商品详情, 按照上述的封装那么你有100个对象
              我们可以将 这 100个 对象, 存放到某一个数组中, 进行维护管理
   

2.创建数组

   1.字面量的方式创建(使用场景最多的方式)

var arr = []
console.log(arr)

   2.内置构造函数的方式创建

var arr = new Array()
console.log(arr)

   2.1创建一个有长度的数组

 var arr = new Array(5)
 console.log(arr)
    

   2.2创建一个有内容的数组

 var arr = new Array( 100 , 200 , 300 , 'QF001')
 console.log(arr)

  数组内部是存放一些数据的,数据的类型

  但是在开发时,一般需要将一个数组内的数据类型限制为一个

    比如:纯字符串数组,纯数字数组,纯对象数组

数组的长度与索引

  数组的长度

   数组的长度并不固定,取决于数组内部有多少元素

   查看方式

     1.打印数据,在控制台展开数据,找到最后的length

     2.打印 数组名.length

   当 数组的长谷    代表当前数组为空数组

 var arr = [ 1 , 2 , 3 , 4 , 5 ]
 console.log(arr)
 console.log(arr.length)
 

  数组的索引(下标)

   有什么用?

     表明 数组 的这个位置上 有什么内容

   注意:

     下标是固定的,永远是 0 1 2 3 4 5 6 .....

     但是下标对应的内容,不是固定的

 var arr = [1,2,3,4,5,]
 console.log(arr)
 console.log('原数组',arr)
 

   consolr.log(arr[0]) //会得到当前数组下标0这个位置上的值 ,,    consolr.log(arr[3]) //会得到当前数组下标0这个位置上的值

   通过数组的下标,我们也可以修改数组中的某一个元素

 arr[2] = '新的数据'
 console.log('修改后的数据: ',arr)
 

遍历数组

   需求:拿到数组各个位置的值

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9,]
//下标     0  1  2   3  4  5  6  7  8
console.log(arr[0])
console.log(arr[1])
console.log(arr[2])
    for(var i = 0;i < arr.length; i++){
    console.log(arr[i])
    }

课堂练习

1.找出数组中的最大值

2.计算数组中所有内容相加的和

3.封装一个函数,名为 includes

   功能为 传入一个数组和数字,判断这个数组中是否包含这个数字

   包含返回true, 否则返回 false

4.封装一个函数,名为 indexOf    功能为 传入一个数组和数字,判断这个数组是否包含这个数字包含返回 这个数字的下标(从左到右第一个)

   否则返回 -1

冒泡排序

   算法/设计模式

     这两个不是一个东西,但是都是为了解决某一类问题的最佳解法

    //冒泡排序(基础版,没有优化)
    var arr = [9, 8, 7, 6, 5, 4, 3, 2, 1]
    
    for(var j = 0; j < arr.length; j++){
        for(var i = 0; i < arr.length; i++){
            if (arr[i] > arr[i + 1]){
                var temp = arr[i]
                arr[i] = arr[i + 1]
                arr[i + 1] = temp
             }
         }
     }
     console.log(arr)
    // 完整版  排序
    var arr = [9, 8, 7, 6, 5, 4, 3, 2, 1]
    
    for (var j = 0; j < arr.length - 1; j++){
        for(var i = 0; i < arr.length - 1 - j; i++){
            if(arr[i] > arr[i + 1]){
                var num = arr[i]
                arr[i] = arr[i + 1]
                arr[i + 1] = num
            }
       }
   }
   

选择排序

    var arr = [9, 3, 6, 2, 4, 1, 8, 5, 7]
    
    for(var k = 0; k < arr.length; k++){
        //1.假设 k 是最小值的下标,保存 minIndex
        var minIndex = k
        //2.循环会帮我们找到真是最小值的下标,并保存在变量 minIndex
        for (var i = k + 1; i < arr.length; i++){
            if(arr[minIndex] > arr[i]){
                minIndex = i
             }
         }
         //3.交换 真实最小值(下标 minIndex) 和 假设最小值 (k) 的位置
         var temp = arr[k]
         arr[k] = arr[minIndex]
         arr[minIndex] = temp
     }
     console.log(arr)