数组的方法以及数组的创建以及概念

news2024/10/5 21:25:27

5.数组

递归

1.什么是递归?

​ 函数自己调用自己,要有临界点(结束条件)

在这里插入图片描述

1.数组的概念(复杂数据类型)

		 	1.什么是数组
           		 它就是一组数据,js的数组成员可以是任意类型,它是可以动态扩容的
            2.数组的创建方式
                1).构造函数创建数组
                如果Array里有一个参数,并且是数值类型,表示数组的初始值长度
                如果有2个参数,那就是数组的成员有两个
                var arr=new Array();//创建一个空数组
                var arr=new Array(10);//创建一个长度为10的数组
                2).数组字面量的表达式(推荐写法)
                var arr=[]
                arr.length=10;//设置长度为10
                3).
                var arr=Array();
            3.数组有一个length属性
            length属性是可以被修改的,原数组发生变化
            var arr=[11,22,33,44]
            arr.length=1;
            arr.length=4;

            4.数组可以通过下标进行取值与赋值
            下标也叫做索引,0开始
                        0    1  2   3
                var arr=[11,22,33,44]
                根据下标获取值
                console.log(arr[2]);//33
                根据下标修改值
                arr[2]="刘登华";
                console.log(arr)

  • 就是一个数据的集合
  • 里面的数据可以是任意类型

2.创建数组的方式

  1. 字面量创建

    var arr=[];
    []:就是字面量
    
  2. 内置构造函数创建数组

    //创建一个空数组
    var arr=new Array();
    //创建一个长度为10的数组
    var arr=new Array(10);
    //创建一个有内容的数组
    var arr=new Array(1,2,3);
    

3.数组的方法

1.pop():

pop()删除数组的最后一位,返回被删除的元素,他会改变原来的数组

     	var arr = [11, 22, 33, 44];
        var res = arr.pop();
        console.log(res);//44(删除的最后一个元素)
        console.log(arr);//[11, 22, 33]

2.push()

push()往数组的最后位置添加元素(1个或多个),返回数组的新长度,他会改变原来的数组

  		var arr1 = [111, 221, 331, 441];
        var res1 = arr1.push("哈哈", "哈哈哈");
        console.log(res1);//6(新数组的长度)
        console.log(arr1);//[111, 221, 331, 441, '哈哈', '哈哈哈']

3.unshift()

shift()删除数组的第一位,返回被删除的元素,他会改变原来的数组

  		var arr2 = [10, 20, 31, 41];
        var res2 = arr2.shift();
        console.log(res2);//10(删除的第一个元素)
        console.log(arr2);//[20, 31, 41]

4.shift()

unshift()往数组的第一个位置添加(1个或多个)元素,返回数组的新长度,他会改变原来的数组

		var arr3 = [10, 200, 310, 41];
        var res3 = arr3.unshift("我可以添加一个", "我也可以添加两个");
        console.log(res3);//6(新数组的长度)
        console.log(arr3);// ['我可以添加一个', '我也可以添加两个', 10, 200, 310, 41]

5.sort排序

sort排序,它是根据ASCII码,进行比较

 		var arr5 = [11, 2, 5, 3, 8, 12, 0, 3];
        arr5.sort(function (a, b) {
            return a - b;//升序
            // return b - a;//降序
        });
        console.log(arr5);//[0, 2, 3, 3, 5, 8, 11, 12]

6.reverse()倒序

翻转数组

 		var arr6 = ["AA", "BB", "CC", "DD"];
        arr6.reverse()
        console.log(arr6);// ['DD', 'CC', 'BB', 'AA']

7.slice()截取

slice()截取,它包含开始位置,不包含结束位置,不会改变原数组

		var arr7 = [11, 22, 33, 44, 55];
        var res7 = arr7.slice(2, 4)
        // var res7=arr7.slice(2)一个参数代表它从这个位置开始,一直截取到最后
        console.log(res7);//[33, 44]
        console.log(arr7);[11, 22, 33, 44, 55]

8.splice()

2个参数,删除 返回被删除的元素,并且是一个新数组

		var arr8 = [11, 22, 33, 44, 55, 66];
        console.log(arr8.splice(3, 1));//44(表示从下标为3开始,删一个元素)
        console.log(arr8);//[11, 22, 33, 55, 66]

3个参数,第二个参数是0(插入),1或1以上(替换)

		// 3个参数,第二个参数是0(插入),1或1以上(替换)
        // 插入(0)
        var arr8 = [11, 22, 33, 44, 55, 66];
        arr8.splice(3, 0, "小小怪")//表示在下标为3的地方,添加
        console.log(arr8);//[11, 22, 33, '小小怪', 44, 55, 66]

1或1以上(替换)

 		var arr8 = [11, 22, 33, 44, 55, 66];
        arr8.splice(3, 2, "哈哈");//表示在下标为3的地方,替换2个,为哈哈
        console.log(arr8);//[11, 22, 33, '哈哈', 66]

9.concat()

concat();合并 会返回一个新的数组

		var arr9 = [11, 22, 33];
        var arr91 = [44, 55, 66];
        var res9 = arr9.concat(arr91);
        var res91 = arr9.concat(arr91,"哈哈");
        console.log(res9);//[11, 22, 33, 44, 55, 66]
        console.log(res91);//[11, 22, 33, 44, 55, 66, '哈哈']

10.join()

join()默认是用","隔开,返回字符串

 		var arr10=[2023,9,8];
        console.log(arr10.join());//2023,9,8
        console.log(arr10.join("-"));//2023-9-8
        console.log(arr10.join("/"));//2023/9/8

总结

总结:会改变原数组和不会改变原数组的分别有哪些?
            会改变:pop,push,unshift,shift,splice,sort,reverse
            不会改变:concat,join,slice

实现数组的拷贝

  // 实现数组的拷贝(浅拷贝)
        var arr=[11,22,33]
        //方式一
        var arr1=arr.concat();
        console.log(arr1); //[11, 22, 33]
        console.log(arr); //[11, 22, 33]
        // 方式二 slice()
        var arr=[11,22,33]
        var arr1=arr.slice(0);
        console.log(arr1);//[11, 22, 33]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/989707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ForkJoinPool的使用及基本原理

文章目录 1. 简介2. ForkJoinPool的基本原理2.1 工作窃取算法(Work Stealing)2.1.1 工作窃取算法的定义和特点2.1.2 工作队列和双端队列的作用与区别 2.2 分治策略(Divide and Conquer)2.2.1 分治策略的概念和应用场景2.2.2 任务拆…

Linux中的软件管家——yum

目录 ​编辑 一,软件安装的方式 二,对yum的介绍 1.yum的作用 2,yum的库 三,yum下载软件的操作 1.yumlist 2.yuminstall 3.yumremove 四,yum源的转换 一,软件安装的方式 软件安装的方式大概分为三种…

AI消除笔快速去除脸部痘痘疤痕,新手变高手!

美颜的途径有很多,比较实用的是祛痘和柔肤。祛除人物脸部的痘痕有多种方法,比较常见且普遍的就是使用PS“污点去除”工具来去除痘痕,以及柔化皮肤。 除了PS我们还可以使用AI图片消除工具,这就对手残党非常的友好了。 牛学长图片…

IDEA快捷键第二版

1、选择当前行和上一行 按住 Shift键 再按两下向上键( ↑ ),按两下选两行,以此类推 2、将整个方法上移动 文本光标应放在方法的标头处,按住Ctrl Shift 向上键( ↑ ), 3、解包 …

JavaScript-----轮播图案例展示

前言: 这一期我们去通过JavaScript的代码实现轮播图的制作,下面有效果展示和代码资源,其中的图片资源和代码资源我都上传上去了,如果需要运行的话,你们可以去直接下载下来。希望各位喜欢! 效果展示 16941…

外汇交易技巧分享:利用MT4交易平台进行精准的外汇技术分析

在外汇交易市场中,技术分析是一种重要的决策工具,能够帮助交易者预测价格走势和制定交易策略。而MT4交易平台作为一种功能强大、广泛应用的交易软件,为交易者提供了丰富的技术分析工具和功能。本文将与大家分享几个利用MT4交易平台(可在mtw.s…

C++设计模式_03_模板方法Template Method

文章目录 1. 设计模式分类1.1 GOF-23 模式分类1.2 从封装变化角度对模式分类 2. 重构(使用模式的方法)2.1 重构获得模式 Refactoring to Patterns2.2 重构关键技法 3. “组件协作”模式4. Template Method 模式4.1 动机( Motivation&#xff…

北京融资融券两融账户最低利率怎么申请?哪家券商无门槛!

北京融资融券利率申请可以低至5%或者以下,无门槛5%支持线上办理,股票成本价,只有极少数的券商可以实现。 北京办理融资融券两融业务如果没有找对正确的开户渠道,自己办理是按照券商默认的利率收取,默认利率8.35%&#…

C#文件重命名工具

文章目录 工具背景4个文件介绍RenamesSpecificPrefixFile.exe.configDataSave.txt 工具介绍重命名的存储方式 文件夹介绍源文件夹 结果使用【PDF】/【视频】重名时坚持拷贝 可能的报错 工具背景 你上次选的这三个选项,他会记住,后面再打开就是上次的位置…

使用本地mysql+linux实现mysql主从同步

1.配置linux 保证linux已经安装好了mysql1.1修改该linux配置文件 vim /etc/my.cnf1.2重启linux的mysql systemctl restart mysqld1.3使用账户密码登录linux中的mysql,查看是否配置成功 mysql> show master status;若显示有FIile和Posttion就表示注linux的主节点配置成功…

基于uwb和IMU融合的三维空间定位算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................................................................kkk 0; for E…

【算法题】小红书2023秋招提前批算法真题解析

文章目录 题目来源T1:5900: 【DP】小红书2023秋招提前批-连续子数组最大和5801: 【二分查找】小红书2023秋招提前批-精华帖子解法1——排序滑动窗口解法2——前缀和 二分查找 5000: 【模拟】小红书2023秋招提前批-小红的数组构造解法——数学 5300: 【哈希表】小红…

欧洲电子产品CE认证 CE-EMC认证办理

任何的产品想要在欧洲自由贸易必须通过CE认证,在产品上加贴CE标志。CE标志表示产品已经达到了欧盟指令规定的安全要求;是企业对消费者的一种承诺,增加了消费者对产品的信任程度。 贴有CE标志的产品将降低在欧洲市场上销售的风险。这些风险包括&#xff1…

C++11新特性③ | 可变参数模板介绍

目录 1、引言 2、可变参数模板函数 2.1、可变参数模板函数的定义 2.2、参数包的展开 3、可变参数模板类 3.1、继承方式展开参数包 3.2、模板递归和特化方式展开参数包 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...&#xff…

RabbitMQ: return机制

1. Return机制 Confirm只能保证消息到达exchange,无法保证消息可以被exchange分发到指定queue。 而且exchange是不能持久化消息的,queue是可以持久化消息。 采用Return机制来监听消息是否从exchange送到了指定的queue中 2.Java的实现方式 1.导入依赖 &l…

基于googlenet网络的动物种类识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ................................................................. % 获取输入层的尺寸 Inp…

异步编程 - 13 高性能线程间消息传递库 Disruptor

文章目录 Disruptor概述Disruptor中的核心术语Disruptor 流程图 Disruptor的特性详解基于Disruptor实现异步编程 Disruptor概述 Disruptor是一个高性能的线程间消息传递库,它源于LMAX对并发性、性能和非阻塞算法的研究,如今构成了其Exchange基础架构的核…

NIFI使用InvokeHTTP发送http请求

说明 这里介绍四种平时常用的http请求方法:GET、POST、PUT、DELETE。 在官方的介绍文档中关于InvokeHTTP处理器的描述是这么说的: An HTTP client processor which can interact with a configurable HTTP Endpoint. The destination URL and HTTP Met…

java 企业工程管理系统软件源码 自主研发 工程行业适用

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&am…

网工内推 | 云架构运维、网络工程师,base北京,最高20k

01 协合新能源 招聘岗位:IT运维工程师 职责描述: 1、对集团内使用云计算架构(Kubernetes)的系统进行规划、运维及管理相关工作。 2、对集团数据中心系统的大数据基础架构(Cloudera Distribution Hadoop)的…