JavaScript基础-数组

数组(Array)

什么是数组

  • 数组:是一种数据类型,属于引用数据类型。

  • 作用:在单个变量名下存储多个数据

  • 注意:

    • 数组是按顺序保存(有序)的,
    • 编号从0开始,数据编号称为索引下标
    • 数组可以存储任意类型的数据。

基本使用

定义数组

声明语法:

let 数组名 = [数据1, 数据2, ..., 数据n]
let names = ['小明', 'niuniu', 'zhuzhu']
访问数组
//数组名[下标]
let names = ['niuniu', 'zhuzhu', 'yaya']
names[0] // niuniu
names[2] // yaya
```

遍历数组
  • 遍历数组:把数组中的每个数据都访问到。
  • 使用场景:for 循环。
  • 数组元素: 数组中的数据。
  • 数组的长度:数组名.length属性,数组中数据的个数。
// 遍历数组
for (let i = 0; i < names.length; i++) {
    console.log(names[i])
}

在这里插入图片描述

数组的操作

  1. 数组的本质是数据集合。

  2. 操作语法:增、删、改、查

  • 查询语法

    //数组[索引]
    //返回值:如果查询不到,则返回 undefined
    let arrs = [1, 'niuniu', true]
    //1. 查询
    console.log(arrs[2])
    console.log('-----')
    
  • 修改语法

    //数组[索引] = 新值
    //返回值: 如果下标不存在,则新增一个数组元素(尽量避免)
    // 2. 修改
    arrs[2] = false
    arrs[4] = 'yaya'
    console.log(arrs[2])
    console.log(arrs)
    console.log('-----')
    
  • 新增语法

    //1. 数组.push(新增数据)
    //作用:将一个或多个元素添加到数组的 末尾
    //返回值:该数组的新长度,会修改原数组
    //3. 新增
    let res = arrs.push('lili')
    console.log(res)
    console.log(arrs)
    
    
    //2. 数组.unshift(新增数据)
    //作用:将一个或多个元素添加到数组的 开头 
    //返回值:该数组的新长度,会修改原数组
    let res1 = arrs.unshift('zhuzhu')
    console.log(res1)
    console.log(arrs)
    
  • 删除语法

    //1. 数组.pop()
    //作用:从数组中删除 最后一个元素
    //返回值:该元素的值,会修改原数组
    //4. 删除
    let res2 = arrs.pop()
    console.log(res2)
    console.log(arrs)
    
    //2. 数组.shift()
    //作用:从数组中删除 最前面一个元素
    //返回值:该元素的值,会修改原数组
    let res3 = arrs.shift()
    console.log(res3)
    console.log(arrs)
    
  • 可以删除也可以添加

    //1. 删除   数组.splice(start,deleteCount)  
    //start:指定修改的开始位置
    //deleteCount:删除个数
    
    
    //2. 添加   数组.splice(start,deleteCount,item1...) 
    //item:添加的元素
    

数组排序

  • 语法:数组.sort(),会改变原数组

    let arr = [30,7,90,0,1]
    //1. 升序
    arr.sort(function (a, b) {
        return a - b
    })
    console.log(arr) //[0, 1, 7, 30, 90]
    
    //2. 降序
    arr.sort(function (a, b) {
        return b - a
    })
    console.log(arr)  //[90, 30, 7, 1, 0]
    

选择排序算法

  1. 选择排序原理:就是从第一个数开始,与后面所有的数相比,找出最小(最大)的数,放在第一个位置。以此类推,每一轮确定一个相对于这一轮最小(最大)的数。

  2. 算法核心:利用循环嵌套比较,根据索引号来交换变量。

    ①:外层循环是一共进行几轮相比较,通过观察,一共进行数组长度-1 次比较

    • for (let i = 0; i < arr.length - 1; i++)
    • 把 i作为最小值起始索引 minIndex

    ②:里层循环是每一轮的比较来查找最小值

    • 里层循环起始值是 i + 1 个元素开始查找
    • for (let j = i + 1; j < arr.length; j++)
    • 进行比较的时候,发现最小的数组元素,把当前元素索引号给 minIndex

    ③:如果 minIndex 和 i 位置不一致,则交换变量

    //算法核心:利用循环嵌套比较,根据索引号来交换变量。
    let arr = [10,4,8,45,3]
    //1. 外层循环: 一共进行几轮比较
    for(let i = 0; i < arr.length - 1; i++) {
        //2. 设置最小起始索引 minIndex => i=0
        let minIndex = i
        //3. 内层循环: 每一轮的比较 找到最小值
        for (let j = i + 1; j < arr.length; j++) {
            //4. 判断: 比较最小的元素
            if (arr[minIndex] > arr[j]) {
                //5. 把当前元素索引号给 minIndex
                minIndex = j 
            }
            //6. 判断:如果 minIndex 与 i 的位置不一样,则交换变量
            if (minIndex != i) {
                let temp = arr[minIndex]
                arr[minIndex] = arr[i]
                arr[i] = temp
            }
        }
    }
    console.log(arr)
    
  • 29
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值