JavaScript篇.day05-数组, 基本/引用数据类型函数调用区别

news2025/1/12 20:04:36

目录

1.Array数组

(1)简介

(2)数组的基本操作

(3)数组的遍历

a. 普通数组的遍历

b.对象数组的遍历

(4)数组对象常用方法

2.基本/引用数据类型函数调用区别


1.Array数组

(1)简介

  • 数组时存放一组数据,长度可变的有序集合
  • 索引: 从0开始, 空数组索引无效
  • 稀疏数组, 其中含有undefined的元素(无内容)

(2)数组的基本操作

  • 定义数组(自变量方式): var 数组名 = [ ]
  • 添加元素:  数组名[ 索引 ] = 值
  • 获取元素:  数组名[ 索引 ]
  • 修改元素: 数组名[ 索引 ] = 值
  • 删除元素: delete 数组名[ 索引 ]
  • 获取数组长度:  数组名.length
// 数组 存放一组数据的集合, 存放多个数据, 有序的数据集合, 长度可变的数组
      // 索引: 从 0 开始,  数组索引最大为 数组名.length - 1    空数组索引无效
      // 稀疏数组     定义数组时,其中有的元素没有内容 undefined
      // 定义数组 (自变量的方式)
      var arr1 = []
      var arr2 = ['mm', 'tt', 'zz']

      // 向数组中添加元素    通过索引
      arr1[0] = 10
      arr1[1] = 20
      arr1[10] = 100
      // 稀疏数组
      console.log(arr1) // [10, 20, empty × 8, 100]

      // 获取数组中指定位置的元素   通过索引
      console.log(arr1[1]) //20
      console.log(arr1[5]) //undefined

      // 获取数组长度     数组名.length
      console.log(arr2.length) //3

      // 修改某元素      数组名[索引] = 值
      arr1[0] = 1000
      console.log(arr1[0]) // 1000

      // 删除某元素      使用delete 删除的是内容, 位置没有删掉, 变为undefined
      delete arr1[1]
      console.log(arr1) //[1000, empty × 9, 100]

(3)数组的遍历

a. 普通数组的遍历

  • for-in遍历, 将数组看作对象遍历
  • for循环遍历每个元素
      // 遍历数组
      // 方式1: for-in   将数组看作对象,索引对应键key,元素为值   只会遍历打印有值的数据
      for (var key in arr1) {
        console.log(arr1[key])
      }
      // 方式2: for   遍历每个元素
      for (var i = 0; i < arr1.length; i++) {
        if (arr1[i] !== undefined) {
          //排除稀疏数组的空元素
          console.log(arr1[i])
        }
      }

b.对象数组的遍历

 // 对象数组
      var objArr = [{ name: '中' }, { name: '美' }, { name: '英' }]
      for (var i = 0; i < objArr.length; i++) {
        console.log(objArr[i].name)
      }

      console.log('================================')

      var objArr11 = [
        { fruits: ['apple', 'pear'] },
        { vegetable: ['tomato', 'potato'] },
      ]
      for (var i = 0; i < objArr11.length; i++) {
        // obj11 接收  objArr11数组中的对象
        var obj11 = objArr11[i]
        console.log('objArr11------', objArr11[i])
        // 遍历对象
        for (var key in obj11) {
          // 接收对象中的值(数组)
          var arr11 = obj11[key]
          console.log('obj11---------', obj11[key])
          // 遍历最里层的数组
          for (var j = 0; j < arr11.length; i++) {
            console.log('arr11------------', arr11[j])
            break
          }
        }
      }

(4)数组对象常用方法

Array对数组的内部支持
Array.concat( )连接数组
Array.join( )将数组元素连接起来以构建一个字符串
Array.length数组的大小
Array.pop( )删除并返回数组的最后一个元素
Array.push( )给数组添加元素
Array.reverse( )颠倒数组中元素的顺序
Array.shift( )将元素移出数组
Array.slice( )返回数组的一部分
Array.sort( )对数组元素进行排序
Array.splice( )插入、删除或替换数组的元素
Array.toLocaleString( )把数组转换成局部字符串
Array.toString( )将数组转换成一个字符串
Array.unshift( )在数组头部插入一个元素
var array1 = [1,2,3]
      var array2 = [4,5,6]
      var array3 = [7,[8,'a']]
      // length 属性     获取数组长度
      console.log(array1.length)   //  3

      // 数组常用方法    ()方法/函数     
      // 1. concat()   拼接数组 或 向数组中添加元素,并返回新数组
      var newArr1 = array1.concat('c','d')
      var newArr2 = array1.concat(array2).concat(array3).concat(9, 10)
      console.log(array1)  //  [1, 2, 3]
      console.log(array2)  //  [4, 5, 6]
      console.log(array3)  //  [7, Array(2)]
      console.log(newArr1) //  [1, 2, 3, 'c', 'd']
      console.log(newArr2) //  [1, 2, 3, 4, 5, 6, 7, Array(2), 9, 10]

      // 2. join()  将数组拼接为字符串, 元素间默认以,分隔
      console.log(array1.join())  //  1,2,3
      console.log(array1.join(""))  //  123

      // 3. push()  向原数组尾部添加元素
      array2.push('d','e','f')
      console.log(array2)   //  [4, 5, 6, 'd', 'e', 'f']

      // 4. pop()  删除原数组尾部的元素, 返回删除元素值
      console.log(array2.pop()) // f
      console.log(array2)   // [4, 5, 6, 'd', 'e']
      
      // 5. unshift()   原数组头部添加一个或多个元素(从右往左加,后加的在最前), 返回数组长度
      console.log(array2.unshift('111','222'))   // 7
      console.log(array2)     //['111', '222', 4, 5, 6, 'd', 'e']

      // 6. shift()     移出数组头部元素, 返回移出的元素
      console.log(array2.shift())    //  111
      console.log(array2)    //['222', 4, 5, 6, 'd', 'e']

      // 7. reverse()    反转数组,返回新数组
      console.log(array2.reverse())    //  ['e', 'd', 6, 5, 4, '222']
      console.log(array2)    //  ['e', 'd', 6, 5, 4, '222']
       
      //8. sort()    排序, 默认按字母序排列
      console.log(array2.sort())   // ['222', 4, 5, 6, 'd', 'e']
      console.log(array2)   //  ['222', 4, 5, 6, 'd', 'e']

      //9. slice(startIndex, endIndex)   分割范围数组,并返回, 不改变原数组    [startIndex, endIndex)
      console.log(array2.slice(0,2))  //['222', 4]
      console.log(array2.slice(1, -1))  //  [4, 5, 6, 'd']
      console.log(array2)  //  ['222', 4, 5, 6, 'd', 'e']

      var array4 = ['piano','erHu','suona']
      // 10. splice(start, delCount, value...)    插入,删除,替换数组元素   start开始位置, delCount删除几个, value值
      //  索引为 0 的位置添加元素
      console.log(array4.splice(0,0,'guitar','guzheng'))   //没有返回值 
      console.log(array4)  //['guitar', 'guzheng', 'piano', 'erHu', 'suona']
      //  删除某索引位置的值(可删除多个值)
      console.log(array4.splice(1,2))  //['guzheng', 'piano']  返回删除的片段
      console.log(array4) //  ['guitar', 'erHu', 'suona']
      //  替换某几个位置的几个元素
      console.log(array4.splice(1,2,'333','444'))   //['erHu', 'suona']  从索引为1的位置开始,替换2个
      console.log(array4)  //  ['guitar', '333', '444']

2.基本/引用数据类型函数调用区别

  • 基本数据类型函数调用是传值调用
  • 引用数据类型函数调用是传地址调用

// 传值调用
      // 将交换步骤封装为一个方法
      function swap1(num1, num2) {
        console.log(num1, num2) // 10 20
        var temp = num1
        num1 = num2
        num2 = temp
        // 交换的是 num1 和 num2, 与a,b无关
        console.log(num1, num2) //20 10
      }
      // 传值调用   基本数据类型数字交换
      // 基本数据类型中,每一个变量名指向内存空间中的具体值,函数调用传递的仅仅是值, 形参的改变不影响实参      a,b,num1,num2互不相关, num1与num2值交换与a,b无关
      var a = 10,
        b = 20
      swap1(a, b)
      console.log(a, b) // 10 20

      // 传地址调用
      // arr数组  i,j要交换的索引
      function swap(arr, i, j) {
        console.log(arr[i], arr[j]) // 1,3
        var temp = arr[i]
        arr[i] = arr[j]
        arr[j] = temp
        console.log(arr[i], arr[j]) // 3,1
      }
      // 传地址调用   引用数据类型
      // 引用数据类型中, 变量名指向内存中的地址, 函数调用是将地址传递,故不同的变量名指向同一个地址, 当其中一个变量指向的内容发生变化时, 另一个也会变    形参的改变影响实参
      var arrs = [1, 2, 3]
      swap(arrs, 0, 2)
      console.log(arrs[0], arrs[2]) //3,1

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

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

相关文章

一文搞懂中台与产品微服务、SaaS的区别

出处&#xff1a;本文摘录自《中台产品经理》一书 谈到“中台”&#xff0c;我们不得不说的另外两个概念就是“微服务”与“SaaS”&#xff0c;有很多人会把“中台”与这两个概念画上等号。但实际上&#xff0c;中台 ≠产品微服务 ≠ SaaS。这两个概念看似与中台很相似&#xf…

因斯布鲁克大学发明一种更快的新型量子计算机

奇偶校验计算机可以在单个量子比特上执行两个或多个量子比特之间的操作&#xff0c;更容易实现复杂的算法。 该团队由 Wolfgang Lechner&#xff08;右一&#xff09;领导&#xff0c;包括Kilian Ender&#xff08;右二&#xff09;、Anette Messinger&#xff08;左二&#xf…

七天免登录(Cookie+session)+ 页面显示动画人物效果(萌娘+气泡效果)

一.七天免登录&#xff08;Cookiesession&#xff09;&#xff0c;基于实现jsp页面 页面效果&#xff1a;勾选7天免登录复选框&#xff0c;输入用户名和密码&#xff0c;点击登录即可&#xff0c;登录后可在cookie中查看用户登录信息&#xff0c;以及用户过期时间 1.登录页面&…

通过heartbeat实现mysql高可用

192.168.6.128 主/heartbeat1 192.168.6.129 从/heartbeat2 192.168.6.131 漂移地址 主备基础&#xff1a;需要在128和129服务器上&#xff0c;搭建mysql主从复制 环境基础配置 128、129操作 # sed -i "s/SELINUXenforcing/SELINUXdisabled/g" /etc/selinux/…

C语言进阶-字符

C语言进阶-字符 #include <stdio.h> int main(int argc, char const *argv[]) {int ch;while ( (ch getchar()) ! EOF ) [putchar(ch);{printf("EOF\n"); }return 0; }强制程序结束 window 字符串数组

java和python调用matlab程序详细记录

Background 关于Java和Python调用matlab程序&#xff0c;网上相关文章很多&#xff0c;但质量不佳&#xff0c;有的前提条件也没介绍&#xff0c;你按照他的步骤来&#xff0c;他成功了&#xff0c;你失败了&#xff0c;很懵啊。我觉得&#xff0c;现在我们查询点什么东西费劲&…

C++11特性-多线程

多线程 线程不是越多越好&#xff0c;每个线程有有一个独立的堆栈空间1M.线程切换需要保存很多中间状态 商用程序的必须要求 并发的实现方法 多进程并发&#xff1a;进程通信&#xff08;同一电脑-文件、管道、共享内存、消息队列&#xff1b;不同电脑-socket&#xff09; 多线…

JSP课设:学生信息管理系统(附源码+调试)

JSP学生信息管理系统 &#xff08;1&#xff09;登录模块&#xff1a;本系统提供用户和管理员两种登陆方式&#xff0c;用户通过输入账号和密码&#xff0c;进行登录。 &#xff08;2&#xff09;注册模块&#xff1a;注册者输入账号和密码&#xff0c;并选择对应的权限级别&a…

交互式仪表板!Python轻松完成!⛵

&#x1f4a1; 作者&#xff1a;韩信子ShowMeAI &#x1f4d8; 数据分析实战系列&#xff1a;https://www.showmeai.tech/tutorials/40 &#x1f4d8; 本文地址&#xff1a;https://www.showmeai.tech/article-detail/410 &#x1f4e2; 声明&#xff1a;版权所有&#xff0c;转…

2022年iFLYTEKA.I.开发者大赛疫情微博情绪识别挑战赛

自然语言技术 零基础入门NLP - 新闻文本分类 基于word2vec的word相似度 疫情微博情绪识别挑战赛自然语言技术背景一、赛事任务二、使用步骤1.README2.数据下载3.模型训练及保存4.模型预测5.比赛结果背景 疫情发生对人们生活生产的方方面面产生了重要影响&#xff0c;并引发了…

写一个计算器【后缀表达式】(C++)

前言&#xff1a; 闲来无事&#xff0c; 用后缀表达式写了个计算器。。。 支持加()、减(-)、乘(*)、除(/)、乘方(^) 啥是后缀表达式&#xff1a; 波兰逻辑学家卢卡西维奇发明的表示表达式的方法 后缀式即逆波兰式&#xff0c;是波兰逻辑学家卢卡西维奇&#xff08;&#…

mysql根据父节点递归查询所有子节点,List转树形结构工具类

经常有业务需要递归查询MySQL树形结构某一节点的所有子节点&#xff0c;每次从网上扒拉找都得找半天&#xff0c;索性就自己总结一些自己遇到的比较好用的一些方法。 SQL方法一&#xff1a; SELECT* FROM(SELECTt1.*,IF( FIND_IN_SET( parent_id, parent_ids ) > 0, paren…

2022年先进封装行业研究报告

第一章 行业概况 封装为半导体产业核心一环&#xff0c;主要目的为保护芯片。半导体封装测试处于晶圆制造过程中的后段部分&#xff0c;在芯片制造完后&#xff0c;将晶圆进行封装测试&#xff0c;将通过测试的晶圆按需求及功能加工得到芯片&#xff0c;属于整个 IC 产业链中技…

Android平台GB28181设备接入端如何实时更新经纬度实现国标平台侧电子地图位置标注

技术背景 我们在做GB28181设备接入端的时候&#xff0c;其中有个功能&#xff0c;不难但非常重要&#xff1a;那就是GB28181实时位置的订阅&#xff08;mobileposition subscribe&#xff09;和上报(notify)。 特别是执法记录仪、智能安全帽、车载终端等场景下&#xff0c;现…

mysql-基础SQL语句CRUD

文章目录MySQL基础1&#xff0c;数据库相关概念1.1 数据库1.2 数据库管理系统1.3 常见的数据库管理系统1.4 SQL2&#xff0c;MySQL2.1 MySQL安装2.1.1 下载2.1.2 安装(解压)2.2 MySQL卸载2.3 MySQL配置2.3.1 添加环境变量2.3.2 新建配置文件2.3.3 初始化MySQL2.3.4 注册MySQL服…

国家涉及身份安全新规解读 | 《关键信息基础设施安全保护要求》

2022 年11 月 7 日&#xff0c;《信息安全技术关键信息基础设施安全保护要求》&#xff08;GB/T39204-2022&#xff09;国家标准发布。作为关键信息基础设施安全保护标准体系的构建基础&#xff0c;该标准将于 2023 年 5 月 1 日正式实施。 该标准提出了以关键业务为核心的整体…

软件测试内容的要点

软件测试内容的要点 20大的召开后&#xff0c;其中提出着力点坚持把发展经济的着力点放在实体经济上&#xff0c;加快建设制造强国、质量强国、航天强国、交通强国、网络强国、数字中国。 随着网络的快速发展&#xff0c;网络和数字已经呈现在大众的视野&#xff0c;软件产品…

2022-12-27 不下载Android Studio直接下载SDK、Platforms-tools、NDK

文章目录全平台支持&#xff01;&#xff01;&#xff01;1. 下载Command line tools only2. 解压command only3. 下载SDK, Platforms-tools, NDK全平台支持&#xff01;&#xff01;&#xff01; 1. 下载Command line tools only 官网链接&#xff1a;https://developer.and…

【电商】FMS财务管理系统---数据流转模块组成

继了解FMS财务管理系统定义之后&#xff0c;如何设计一个FMS系统成了新的问题&#xff0c;笔者在此介绍了FMS的业务逻辑和结构&#xff0c;希望对读者有所帮助。 在此还是要强调一下&#xff0c;虽然这里称之为“财务系统”&#xff0c;但和专业的财务软件有区别&#xff0c;只…

零售收银软件太难挑!实测市面上最受欢迎的收银软件,第一个好用

零售收银软件千千万&#xff0c;常常让商户老板挑得眼花缭乱&#xff0c;不少老板反馈&#xff0c;不知道怎么挑选收银系统软件才能不踩雷。本期小编收集了市场受欢迎度较高的五个零售收银软件&#xff0c;整理了它们各自的优势和劣势&#xff0c;供大家参考。 第一名&#xff…