JS学习归纳4

        前面学习了有关变量、分支结构、循环结构的基础知识。今天将对下一个非常重要的知识点进行学习,那就是数组

一、 数组的定义

        数组可以把一组相关的数据一起存放,方便程序员的访问与获取。

        数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。数组可以将一种或者一组数据存储在单个变量名下的存储方式方式。

// 普通变量 只能存一个值
var num = 1; 
// 数组一次可以存储多个值
var arr = [1,2,3,4,5];

二、 如何创建数组

2.1 使用 new 关键字

var 数组名 = new Array() ;
var arr = new Array(); // 创建一个新的空数组

        注意: Array () ,A 要大写 !!!

2.2 利用数组字面量创建数组

        何为字面量?其实就是看到这个符号就能知道这个变量的类型。

        数组的字面量是:  [ 使用,分隔 ] 。这种方式也是我们以后最多使用的方式。

2.3 数组元素的类型

        数组中可以存放任意类型的数据,例如字符串,数字,布尔值等。

        这一点和其他的编程语言不太一样,其他的编程语言会要求数组的元素类型必须一致,但是JS放宽了这一限制。

三、数组元素的获取

         使用数组的索引进行获取。索引 (下标) :用来访问数组元素的序号(数组下标从 0 开始)。

        数组可以通过索引来访问、设置、修改对应的数组元素,我们可以通过“数组名[索引]”的形式来获取数组中的 元素。

// 定义数组
var arr1 = [1,2,3];
// 获取数组中的第2个元素
alert(arr1[1]); 

        当访问越界元素(超出数组个数,显示Undefined)

// 定义数组
var arr1 = [1,2,3];
// 获取数组中的第4个元素
console.log(arr1[3]); 
//没有第四个元素,显示Undefined

四、 遍历数组

        数组的获取一次只能获取一个元素,如何一次获取多个元素?结合循环结构。

        这里需要使用到一个获取数组长度的方法   arr.length  。这里返回的结果是数组元素的个数。作为我们的结束判断。

    <script>
        // 遍历数组:就是把数组的元素从头到尾访问一次
        var arr1 = ['张三', '雪绒花', '哈哈哈哈'];
        for (let i = 0; i < arr1.length; i++) {
            console.log(arr1[i]);
            1
        }
        // 1. 因为我们的数组索引号从0开始 ,所以 i 必须从 0开始  i < 3
        // 2. 输出的时候 arr[i]  i 计数器当索引号来用
    </script>

        有关遍历我们写一个求和的案例:

    <script>
        var arr = [58, 59, 60, 61, 62];
        var sum = 0;
        var average = 0;
        for (let i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        average = sum / arr.length;
        console.log('总和:' + sum);
        console.log('平均:' + average);
    </script>

        有关遍历我们写一个求极值的案例:

    <script>
        var arr = [88, 55, 94, 286, 31, 40, 158];
        var max = arr[0];

        for (let i = 0; i < arr.length; i++) {
            if (arr[i] >= max) {
                max = arr[i];
            }
        }
        console.log('最大值' + max)
    </script>

        思路分析:

        1、 声明一个保存最大元素的变量 max。

        2、 默认最大值可以取数组中的第一个元素。

        3、 遍历这个数组,把里面每个数组元素和 max 相比较。

        4、 如果这个数组元素大于max 就把这个数组元素存到 max 里面,否则继续下一轮。

        5、 最后输出这个 max。 

五、 数组的增删改查

5.1 通过修改 length 长度新增数组元素

        length 属性是可读写的!!!

       如果只扩容了,但是还没有填充内容,此时如果去访问,默认值就是 undefined。

5.2 通过修改数组索引新增数组元素/修改元素

        可以通过修改数组索引的方式追加数组元素。

        但是,如果此时位置上已经有元素了,其实就是实现了元素的修改。

5.3 使用新增元素的方法填充数组案例

    <script>
        var arr = [];
        for (let i = 0; i < 10; i++) {
            arr[i] = i + 1;
            console.log(arr[i]);
        }
    </script>

5.4 筛选数组重新填入新数组案例( 灵活使用length,length 自动增加)

    <script>
        var arr = [22, 31, 5, 8, 9, 77, 26, 49];
        var newarr = [];
        for (let i = 0; i < arr.length; i++) {
            if (arr[i] >= 10) {
                newarr[newarr.length] = arr[i];
            }
        }
        for (let i = 0; i < newarr.length; i++) {
            console.log(newarr[i]);
        }

    </script>

        重点:灵活使用length,length 自动增加!!!

5.5 数组元素的删除

        这个其实和筛选的思路是一样的。将不满足的排除,剩下的存入新数组。这里就不赘述。直接放一个例子。

        删除0元素的案例:

    <script>
        
        var arr = [88, 0, 59, 0, 0, 0, 123, 49, 52];
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] != 0) {
                newArr[newArr.length] = arr[i];
            }
        }
        console.log(newArr);
    </script>

六、 反转排序

        这个算法的核心思路是:逆序输出旧数组的元素,然后存入新的数组。

    <script>
        var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
        var newarr = [];
        for (let i = arr.length - 1; i >= 0; i--) {
            newarr[newarr.length] = arr[i];
        }
        console.log(newarr);
    </script>

七、 冒泡排序(必考,必会)

        冒泡排序:是一种算法,把一系列的数据按照一定的顺序进行排列显示(从小到大或从大到小)。这是一个经典的算法案例,必须要熟练掌握。

        实现的思路:

        1、明确一共需要进行多少轮大循环(外循环): arr.length -1 ;

        2、明确第 i 轮中需要比较多少次: arr.length - i -1 ;

        3、比较过程中按照 规定的顺序交换就可以

        这里给出一个例子:对   [ 24, 35, 12, 3, 88]  进行升序排列

        

    <script>
        // 冒泡排序

        var arr = [24, 35, 12, 3, 88];
        var temp;
        for (let i = 0; i < arr.length - 1; i++) {
            for (let j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] >= arr[j + 1]) {
                    temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;
                }

            }

        }
        console.log(arr);
    </script>

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值