• 5_1:数组


    知识梳理

    //1 遍历数组:for循环遍历数组中  i是计数器  arr[i]是数组元素
    //2 输出多个变量,用逗号隔开
    //3 重点掌握: 数组去重、数组翻转、冒泡算法

    一 基本概念

    1)基本概念

    //1 数组是:一组数据的集合,存储在单个变量下的优雅方式
    //2 数组可以存放任意类型的元素
    //3 数组是 Array 对象创建的
    //4 数据之间用逗号分割
    //5 数组元素:= 数组里面的数据
    //5 数组的字面量是 [] 中括号
    //7 数组声明并赋值 称之为 初始化

    2)创建数组

    //1 利用new创建数组
    var arr = new Array(); //创建了一个空数组 var arr = new Array(2);//创建了一个长度为2的空数组
    var arr = new Array(2,3);//创建了包含2个元素的数组
    没有参数是空数组
    参数一个是指定length
    参数两个或以上就是赋值 = [2,3];
    //2 数组字面量[]创建 ( 常用 )
    var arr = [];

    3)数组的索引

    索引: 用来访问数组元素的序号 也称下标 [ 从0开始 ]
    数组可以通过索引来访问、设置、修改对应的数组元素

    4)访问数组元素

    //1 数组名[索引号] //访问数组元素
    //2 如果索引号不存在 输出undefined

    二  遍历数组

    1)遍历概念

    //1 把数组中的元素从头到尾都访问一次

    2)基本语法

    //1 应for循环遍历
    //2 var i = 0; 索引从0开始  i必须等于0
    //3 i < arr.length 小于length整好是索引的长度
    //4 i 是计数器 当索引号使用
    //5 arr[i] 是数组的第i个数组元素
    var arr = [1,2,3,4,5,6];
    for (var i = 0; i < arr.length; i++) {
    console.log(arr[i]);//arr[i] 是正在访问的数组元素
    }  

    3)获取数组长度

    //1 arr.length 可以得到数组的长度
    //2 length属性动态监测 数组元素的个数

    三 遍历数组练习

    1)求数组元素的和 还有平均值

    var arr = [10,20,30,40,50];
    var sum = 0;//求和变量
    for (var i = 0; i < arr.length; i++) {
        sum = sum + arr[i]
    }
    var avg = sum / arr.length;
    console.log(avg);
    console.log(sum); 

    2)求数组最大值

    //1 设一个保存最大值的变量MAX
    //2 MAX的值设置为变量的第一个元素
    //3 遍历数组 把数组中的每个元素和MAX做比较
    //4 如果这个元素比MAX大就把它存到MAX里面 继续下一轮比较
    //5 最后输出 MAX
    var arr = [10,20,25,35,5];
    var max = arr[0];
    for (var i = 1; i < arr.length; i++) { //i =1 从数组第二个开始比较
        if (arr[i] > max) {
            max = arr[i];
        }
    }
    console.log('该数组中最大值是' + max);

    3)数组转字符串

    var arr = ['小明','小王','小刘','小张'];
    var str = '';//字符串变量
    var stp = '|';//连接符号
    for (var i = 0; i < arr.length; i++) {
      str += arr[i] + stp;//i是计数器
    }
    console.log(str);

    4)筛选数组 [ 重点 ]

    //需求:把数组中大于10的筛选出来
    //思路
    //1 声明一个新数组 newArr
    //2 变量旧数组 把大于10的找出来 依次追加到新数组中
    
    //方法1:定义新变量 j
    var arr = [25,2,25,4,32,6];
    var newArr = [];
    var j = 0;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] > 10) {
            //新数组的索引号应该从0开始
            newArr[j] = arr[i];
            j++;
        }
    }
    console.log(newArr);// [25, 25, 32]
    
    //方法2:用数组的length
    var arr = [25,2,25,4,32,6];
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] > 10) {
            //刚开始newArr.length就是0
            newArr[newArr.length] = arr[i];
        }
    }
    console.log(newArr);// [25, 25, 32]
    //利用的是: length自动检测数组元素的变化
    //每新增一个元素 数组长度就变化一次

    5)去掉某一个值

    //要求:把数组中的0都去掉 形成一个不包含0的新数组
    var  arr = [0,12,13,14,15,0,45,2];
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {//i初始化必须是0 因为数组下标从0开始的
        if (arr[i] != 0 ) {
            newArr[newArr.length] = arr[i];
        }
    }
    console.log(newArr); 

    6)翻转数组 [ 重点 ] 

    //核心思路
    //1 把旧数组的第一个值 给 新数组的第一个值
    //2 i一次递减
    //3 旧数组的最后一个值的索引号 = arr.length -1
    var  arr = [1,2,3,4,5,6,7,8,9,10];
    var newArr = [];
    for (var i = arr.length -1; i >= 0; i--) {
        newArr[newArr.length] = arr[i];
    }
    console.log(newArr);

    7)冒泡排序 [ 重点 ]

    //冒泡排序
    //核心思路:从左到右 两两比较 左边比右边大 交换变量值 左侧比右侧小 不交换变量值
    // 1 外层循环负责趟数 [趟数 = 元素个数 -1]
    //------------------------------------------------
    // 2 里层循环负责每一趟需要比较的组数(2个一组) [5个元素4组]
    // 3 每一次递减一组 [因为最大的已经到了最右侧了]
    //[j <= arr.length - i - 1] 这个公式是重点
    
    var arr = [10,15,68,32,74];
    for (var i = 0 ; i < arr.length; i++) {//外循环负责比较的趟数
        for (var j = 0; j <= arr.length - i - 1;j++) {//负责每一趟比较的组数
            //组数 = 数组长度 - 循环次数 5 - 0 -1 索引从开始所以 -1
            if (arr[i] > arr[i + 1]) {
                var temp = arr[i +1];//临时变量 = 右边的值
                arr[i + 1] = arr[i];//把左侧大的 赋值给右侧
                arr[i] = temp;//把右侧小的移动到左侧
                //交换变量
            }
        }
    }
    console.log(arr);

  • 相关阅读:
    浅谈python web三大框架
    Mysql异常
    格式化时间转换
    MySql存储日期为long型,判断时间大小
    Linux下部署项目
    excel
    Tomcate的启动问题
    计算时间差
    地图系的转换
    关于获取本机真实IP
  • 原文地址:https://www.cnblogs.com/fuyunlin/p/14402933.html
Copyright © 2020-2023  润新知