zl程序教程

您现在的位置是:首页 >  前端

当前栏目

JavaScript笔记(4)

2023-06-13 09:12:59 时间

早起学习加油加油!!!发现忘了好多CSS的内容了,得抽空复习一下...

发现前面200P应该都是我能轻松掌握的知识!加快速度!

数组

数组的概念:

Q: 之前学习的变量,只能存储一个值.如果我们想存储班级中所有学生的名字,那么如何存储呢?

A:可以使用数组(Array).数组可以把一组相关的数据一起存放,并提供方便的访问(获取)方式.

Q:什么是数组呢?

A:数组是指一组数据的集合,其中每个数据都被称作元素,在数组中可以存放任意;类型的元素.数组是一种将一组数据存储在单个变量名下的优雅方式.

数组的创建方式:

JS中创建数组的方式有两种

  • 利用new创建数组
  • 利用数组字面量创建数组

利用new创建数组(这个后面再学习)

var 数组名 = new Array( );

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

利用数组字面量创建数组

var 数组名 = [ ] ;

  • 数组的字面量是方括号 [ ]
  • 声明数组并赋值称为数组的初始化
  • 这种字面量方式也是我们以后使用最多的方式
  • 数组中可以存放任意类型的数据,例如字符串,数字,布尔值等

数组的索引:

索引(下标):用来访问数组元素的符号(数组下标从0开始.)

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

这里的访问就是获取得到的意思.

        var arr1 = [1, 2 , 'pink老师', '5'];
        console.log(arr1[2]); // pink老师
        console.log(arr1[4]); //undefined

注:JavaScript没有下标越界的错误,如果索引超出了元素的数量不会报错,结果是undefined.

遍历数组

遍历数组我们使用for循环即可

        var arr1 = [1, 2 , 'pink老师', '5'];
        for(var i = 0; i < 4; i++) {
            console.log(arr1[i]);
        }

注意: i要从0开始,因为索引是从0开始的,索引最大到3,所以要<4.

那么还有一个问题,i < 4是我们数出来的,难道我们每次都要去数有多少个元素吗?我们可以直接用length方法求得元素的个数,然后直接 i < arr1.length就可以了

求数组最大值:

        let arr3 = [3, 55, 33, 66, 45, 47];
        let biggest = arr3[0];
        for (var i = 0; i < arr3.length; i++) {
            if (arr3[i] > biggest) {
                biggest = arr3[i]
            }
        }
        console.log(`最大值为${biggest}`);

数组中新增元素

  • 通过修改length长度新增数组元素
    • 可以通过修改length长度来实现数组扩容的目的
    • length属性是可读写的

我们可以手动修改arr的length值,让他扩容.

        let arr5 = [4, 6, 3];
        arr5.length = 5;
        console.log(arr5);

我们将空的打印出来看看是什么.

  • 修改数组索引号追加元素
  console.log(all);
  let arr5 = [4, 6, 3];
  arr5[3] = 'pink'
  arr5[4] = 'green'
  console.log(arr5);

注:

如果我们已经有的元素,再重新赋值,那么原先的元素会被替换.

不要直接给数组名赋值,否则整个数组都没有了.

        var arr = [];
        for (var i = 1; i <= 10; i++) {
            arr[i-1] = i;  //注意是i-1,否则arr[0]为空值
        }
        console.log(arr);

课堂案例:冒泡排序

冒泡排序,是一种算法,把一系列的数组按照一定的顺序进行排列显示(从大到小或从小到大).

原理:冒泡排序是一种简单的排序算法,它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数据工作是重复地进行直到没有再需要交换,也就是说该数列已经完成排序.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端.

还没听老师讲,自己做了一下,没想到一次就做出来了! 虽然好像还是存在点问题,但是不影响使用,就是不太严谨,就是i和j的范围问题.

        var arr = [5, 4, 3, 2, 1]
            for (var i = 0; i < arr.length; i++) {
                for (var j = 0; j < (arr.length); j++) {
                    var temp;
                    if (arr[j] > arr[j + 1]) {
                        temp = arr[j];
                        arr[j] = arr[j + 1]
                        arr[j + 1] = temp;
                    }
                }
                console.log(arr);
            }
            console.log('最后结果为:'+arr);

用了两次循环,因为不可能只比较一次的,所以也要循环比较的趟数.比较的内部也要循环,比较大小.