首页 > 编程语言 >重生前端之我在javascript敲代码(03-数组)

重生前端之我在javascript敲代码(03-数组)

时间:2024-03-28 19:59:46浏览次数:26  
标签:03 arr 元素 console log javascript 数组 var 重生

一. 数组(重点)

思考:如何保存一个班级的所有学生的姓名? 回答:一种方法利用前面学习过的知识,则每一条信息都需要一个变量去保存,缺点是这样做很麻烦,而且容易出错,又不合理;另一种方法就是利用数组。

概念:数组是存储一系列值的变量集合,可以存储多个值。

1.1 语法

数组构成:数组由一个或多个数组元素组成的,各元素之间使用逗号“,”分割。 数组元素:每个数组元素由“索引下标”和“值”构成。

索引下标:简称下标,以数字表示,默认从0开始依次递增,用于识别元素。 值:元素的内容,可以是任意类型的数据,如数值型、字符型、数组、对象等。

1.2 创建数组

两种方式创建数组:直接使用“[]”的方式和实例化Array对象的方式

 <script>
        // 1.通过直接量创建数组
        var arr = [1, 2, 3, "abc", true];
        console.log(arr);

        // 2.通过构造函数创建数组
        var arr2 = new Array("张三", "李四");
        console.log(arr2);
        var arr3 = new Array(5);
        console.log(arr3);

        var arr4 = [1, 2, 3, , 5];
        console.log(arr4);
        // var arr5 = new Array(1, 2, 3,, 5);

        // 访问数组元素
        console.log(arr[3]);
        arr[3] = "ABC";
        console.log(arr);
        delete arr[3];
        console.log(arr);

        // 数组的长度
        console.log(arr.length);
        arr.length = 10;
        console.log(arr);
    </script>
  • 大于数组长度

var arr1 = [];
arr1.length = 5;
console.log(arr1);      // 输出结果:(5) [empty × 5]
var arr2 = [1, 2, 3];
arr2.length = 4; 
console.log(arr2);      // 输出结果:(4) [1, 2, 3, empty]

  • 小于数组长度

var arr4 = ['hehe', 'xixi', 'gugu', 'jiujiu'];
arr4.length = 3; 
console.log(arr4);      // 输出结果:(3) ["hehe", "xixi", "gugu"]

1.3 数组遍历数组

在创建完数组后,如何遍历数组中的元素,对其进行操作呢? 一维数组可以利用for、forEach、for…of进行遍历,目前先介绍for,之后我们再学习其他.

 <script>
        //使用for循环遍历数组
        var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

        for (var i = 0; i < arr.length; i++) {
            console.log(arr[i]);
        }
    </script>
1.4二维数组
  • 数组还可以根据维数划分为一维数组、二维数组、三维数组等多维数组。

  • 解决开始提出的问题:保存一个班级学生信息,每个数组元素都代表一个学生,而每个学生都使用一个一维数组分别表示其姓名、学号、年龄等信息,这样通过一个变量即可有规律的保存一个班级的所有学生信息,方便开发时进行处理。 二维数组:是指数组元素的“值”是一个一维数组,如下图。

 <script>
        //二维数组
        var arr = [1, 2, 3, [4, 5], 6, [7, 8, 9]];
        console.log(arr);
    </script>
1.5 数组排序(重点)
1.5.1 最大值和最小值
 // 1.求数组的最大值和最小值
        var arr = [1, 6, 2, 98, 5, 8, 11, 69, 52];
        var max = arr[0];
        var min = arr[0];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
            if (arr[i] < min) {
                min = arr[i];
            }
        }
        console.log(max);
        console.log(min);
1.5.2 冒泡排序

实现原理:在冒泡排序的过程中,按照要求从小到大排序或从大到小排序,不断比较数组中相邻两个元素的值,将值大的元素或最小的元素交换至右端。

 算法步骤:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

图片演示:

​​​​​​ 

代码详情: 

 // 2.冒泡排序
        var temp;
        // 控制比较几趟
        for (var i = 0; i < arr.length - 1; i++) {
            // 控制每次比较的元素
            for (var j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    // 二者交换
                    // temp = arr[j];
                    // arr[j] = arr[j + 1];
                    // arr[j + 1] = temp;

                    // 解构赋值
                    [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
                }
            }
        }
        console.log(arr);

二.数组操作方法(重点)

学习数组的方法要关注以下3个重点:

  • 方法参数

  • 返回值

  • 改变不改变原数组

 <script>
        // 1.操作方法需要传递哪些参数
        // 2.操作方法的返回值是什么
        // 3.是否改变原来的数组

        var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
        // 1.push() 将一个或多个元素添加到数组末尾
        // arr.push(10, 11);               // 传递的参数为要添加的元素
        console.log(arr.push(10, 100));     // 返回添加过后数组的长度
        console.log(arr);                  // 改变原数组

        // 2.pop() 从数组末尾删除一个元素
        // arr.pop();                       // 没有参数
        console.log(arr.pop());             // 返回被删除的元素
        console.log(arr);                   // 改变原数组

        // 3.unshift()  将一个或多个元素添加到数组的开头
        // 传递的参数为要添加的元素
        // 返回添加过后数组的长度
        // 改变原数组

        // 4.shift()    从数组开头删除一个元素
        // 没有参数
        // 返回被删除的元素
        // 改变原数组

        // 5.includes() 数组中是否含有某个元素
        console.log(arr.includes(0));       // 传递的参数为查找的元素       返回值true false
        console.log(arr);                   // 不改变原数组

        // 6.indexOf()  查找某个元素在数组中第一次出现的位置
        // 传递的参数为要查找的元素
        // 返回值为查找元素第一次出现的位置索引下标.查找失败返回 -1
        // 不改变原数组

        // 7.join() 数组转为字符串
        console.log(arr.join("-"));     // 传递的参数是 分割的符号      返回值转换后的字符串
        console.log(arr);               // 不改变原数组

        // 8.toString() 数组转为字符串
        console.log(arr.toString());    // 没有参数 返回转换后的字符串  不改变原数组

        // 9.Array.isArray() 判断参数是否为数组
        console.log(Array.isArray(arr));    // 传递的参数是要检测的元素 返回值true false  不改变原数组


        console.log("===========================");
        console.log(arr);

        // 10.splice() 数组的增删改
        // arr.splice(index,要删除的元素的个数,要增加的元素)
        // 删除元素
        // console.log(arr.splice(3,2));       // 返回值 被删除的元素组成的数组
        // console.log(arr);                   // 改变原数组

        // 添加元素
        // console.log(arr.splice(3, 0, 11, 12, 13, 14));
        // console.log(arr);

        // 修改元素
        // arr.splice(3, 2, 11, 12);
        // console.log(arr);

        // 11.slice() 复制原数组的部分内容
        console.log(arr.slice(2, 6));       // 参数为 开始和结束索引  复制结果包含开始,不包含结束,  不改变原数组
        // 克隆数组 
        console.log(arr.slice(0));

        // 12.reverse() 颠倒数组
        console.log(arr.reverse());;              // 没有参数   返回颠倒后的数组  改变原数组
        console.log(arr);

        // 13.concat() 链接两个或多个数组
        console.log(arr.concat([11, 12, 13], [14, 15, 16, 17], [20, 21, 22]));
        // 参数为需要拼接的数组, 返回拼接后的新数组, 不改变原数组
        console.log(arr);
    </script>

对数组进行增删改

  • 增加:arr.splice(index, 0, item)

    • 从索引index开始, deleteCount(可选):0

    • 把item或者更多的内容插入到索引index的前面

    • 返回值:返回空数组

  • 修改: arr.splice(index, x, item)

    • 从索引index开始,删除x个元素, item替换删除的部分

    • 把原有内容删除掉, 然后用新内容替换掉

    • 返回值:修改掉原有内容的数组

  • 删除:arr.splice(index,x)

    • 从索引index开始,删除x个元素

    • (如果第二个参数省略, 则从index删除到末尾)

    • 返回值:删除掉原有内容的数组

​​​​​​​

2.1数组方法总结
改变原数组方法
arr.push()将一个或多个元素添加到数组的末尾
arr.pop()从数组的末尾删除一个元素。
arr.unshift()将一个或多个元素添加到数组的开头
arr.shift()从数组的开头删除一个元素。
arr.splice()通过删除或者替换现有元素或者原地添加新的元素来修改数组。
arr.reverse()数组中元素的位置颠倒,并返回该数组。
不改变原数组方法
arr.includes()用于确定数组中是否含有某个元素。
arr.indexOf()检测当前值在数组中第一次出现的位置索引。
arr.join()将数组的所有元素连接到一个字符串中。
arr.toString()返回包含所有数组值的字符串,以逗号分隔。
arr.slice()复制原数组的部分内容。
arr.concat()用于连接两个或多个数组。

 

 

 

 

 

标签:03,arr,元素,console,log,javascript,数组,var,重生
From: https://blog.csdn.net/y15237261911/article/details/137117376

相关文章

  • JavaScript数据类型
    JS数据类型整体分为两大部分:基本数据类型引用数据类型基本数据类型    Number数字型    数学中学习到的数字,可以是整数,小数,正数,负数。    JavaScript中的正数,负数,小数等统一称为数字类型。 注意事项    JS是弱数据类型,变量到底......
  • P1037 [NOIP2002 普及组] 产生数 python 题解
    原题链接:产生数原理解释本题就是基本的dfs,对每一个数遍历深搜,得到他能变化的所有情况,最后相乘就是结果,网上都是c的解法,需要用到高精度,但是python可以处理大数,不需要。vis[]判断该数是否变换过,防止重复以n=123,k=2,变换列表x=[1,3],y=[3,4],即1->3,3->4:先遍历1:遍历......
  • 不同操作系统中通用解决方案,浏览器拉起app或打开本机应用软件原理,前端网页如何打开一
    不同操作系统中通用解决方案,浏览器拉起app或打开本机应用软件原理,前端网页如何打开一个PC本地应用,通过Scheme、JavaScript、第三方库分别实现前端网页打开本地应用。设想一个场景,当我们在浏览一个网页并且需要下载某个资源时,你的电脑可能经常会跳出一个提示框,询问你是否需......
  • 20240328每日一题题解
    20240328每日一题题解摘要本文对于2024年3月28日的每日一题进行了问题重述,并将问题拆解为五个步骤,分别进行了详细的讨论与求解,实现了整型与字符串类型的互相转换。并且还指出,在编写C++程序时,需要观察数据范围,在有必要时使用长整型(longlong)存储数据,以免出现整型溢出现象。关键......
  • 2024.03.28【UI设计】新拟态风格设计
    新拟态风格就是类似于给图形图案制作出3D的凸出或者凹进效果的风格这个风格的设计需要使用到即时设计软件的蒙版(与ai不同,ai的蒙版仅有透明度蒙版,无轮廓蒙版)新拟态风格的实现主要是通过三个效果:(1)一个相对浅色高斯模糊效果元素、(2)一个相对深色的无效果元素、(3)一个正常颜色的高......
  • SAP Fiori开发中的JavaScript基础知识1 - 背景介绍
    1.背景开发SAPFiori应用程序过程中,不可避免的要用到JavaScript去增强或影响UI的行为。对于传统ABAPer,JavaScript的语言特性和风格与ABAP是有较大的不同的。接下来的一段时间,我会尝试整理在SAPFiori开发过程中会常用到的一些JavaScript基础知识,并结合介绍在SAPBAS中开发Fio......
  • SAP Fiori开发中的JavaScript基础知识2 - 变量,操作符,值,类型
    1.JavaScript代码示例在介绍JavaScript具体语法前,让我们先看一段在Web应用程序过程中的JS代码片。<!DOCTYPEhtml><html> <head> <metacharset="utf-8"/> <title>FirstJavaScriptApplication!</title> <scriptsrc="js/myExternal.js&q......
  • hbase - [03] 客户端常用命令(hbase shell)
     1、列出所有namespacelist_namespace2、创建namespacecreate_namespace'ns_name'3、修改namespace属性alter_namespace'nsname',{METHOD=>'set','PROPERTY_NAME'=>'PROPERTY_VALUE'}4、删除namespace属性alter_namesp......
  • 【CSP试题回顾】201803-2-碰撞的小球(优化)
    CSP-201803-2-碰撞的小球解题思路【思路一:暴力枚举】初始化:首先,从输入中读取小球的数量n、线段的长度L以及需要模拟的时间t。然后,读取每个小球的初始位置,并初始化它们的移动方向为向右(用布尔值des表示,true表示向右,false表示向左)。模拟过程:模拟每一秒小球的运动和碰撞......
  • ECMAScript与JavaScript:一窥两者之间的微妙差异
    目录引言一、ECMAScript的定义与作用二、JavaScript的定义与作用三、ECMAScript和JavaScript的关系同源关系语法规范兼容性四、ECMAScript和JavaScript的区别概念层面更新频率兼容性五、ECMAScript规范和JavaScript引擎的实现之间是如何保持兼容性的六、ECMAScrip......