JavaScript数组简介

news2024/12/28 21:21:36

JavaScript中的数组是一种强大的数据结构,它可以用来存储和处理各种类型的数据。熟练掌握数组的使用可以让编写JavaScript代码更加高效和优雅;
● 例如,现在我十个朋友要存到变量中,传统的话

const friend1 = "张三";
const friend2 = "李四";
const friend3 = "王五";

这样一个一个通过变量的方式存储,有点太过于麻烦了!通过数组的存储方法就非常的方便,具体的写法如下:

const friends = ["张三", "李四", "王五"];
console.log(friends);

在这里插入图片描述

● 除了这种创建数组的方式之外,还可以使用构造函数 Array() 来创建一个数组。,如下

const years = new Array(1991, 1998, 2000, 2023);

● 现在我们知道了如果去创建数组,但是我们也要有方法去把数组里面的数据取出来!

const friends = ["张三", "李四", "王五"];
console.log(friends);



console.log(friends[0]);
console.log(friends[2]);

在这里插入图片描述

注意,数据的编号是0开始的哦;

● 除此之外,我们也可以获取数据的长度

const years = new Array(1991, 1998, 2000, 2023);
const friends = ["张三", "李四", "王五"];
console.log(friends);

console.log(friends[0]);
console.log(friends[2]);

console.log(friends.length);

在这里插入图片描述

● 再来,我们也可以获取数组中最后一个数据是什么?

const years = new Array(1991, 1998, 2000, 2023);
const friends = ["张三", "李四", "王五"];
console.log(friends);

console.log(friends[0]);
console.log(friends[2]);

console.log(friends.length);
console.log(friends[friends.length-1]);

在这里插入图片描述

● 我们也可以更换数组里面的数据

const years = new Array(1991, 1998, 2000, 2023);
const friends = ["张三", "李四", "王五"];
console.log(friends);

console.log(friends[0]);
console.log(friends[2]);

console.log(friends.length);
console.log(friends[friends.length - 1]);

friends[2] = "IT知识一享";
console.log(friends);

在这里插入图片描述

问题:friends数组被声明成一个变量了,而且是用const去声明的,那为什么我们还可以改变数组中的数据?
回答:虽然 const 声明的变量是不可重新赋值的,但对于数组或对象这样的复合类型,声明为 const 的变量仍然可以修改其元素或属性。这是因为在 JavaScript 中,const 只保证了变量的引用地址不变,而不是变量内部的值不变。
对于上述代码中的 friends 数组,虽然使用 const 创建了变量 friends,但仍然可以通过下标访问和修改数组元素的值,因为 friends 是一个数组对象,而不是具有单一值的原始数据类型。如果试图重新分配一个新的数组或者字面量给 friends,那么就会触发变量 friends 的重新声明,从而抛出一个 TypeError 错误。
总之,在 const 声明的情况下,变量引用的值不能被修改,但是它们所指向的对象或数组本身的属性或元素是可以修改的。

意思就是const声明一个变量,例如是一个一次性杯子,但是杯子里面是水还是可乐,const无法保证,const可以保证的是一次性杯子不能换成玻璃杯或其他杯子!

● 除此之外,数据里面的数据可以是通过变量赋值,或者通过表达式,或者通过其他数据,例如:

const friends = ["张三", "李四", "王五"];
console.log(friends);

console.log(friends[0]);
console.log(friends[2]);

console.log(friends.length);
console.log(friends[friends.length - 1]);

friends[2] = "IT知识一享";
console.log(friends);

const firstName = "诸葛亮";
const ITshare = [firstName, "司马懿",1998-85, "student", friends];
console.log(ITshare);
console.log(ITshare.length);

在这里插入图片描述

一个错误用法的例子:

const calcAge = function (birthYear) {
  return 2037 - birthYear;
}

const years = [1990, 1998, 2001, 2023];
calcAge(years);

例如,我们想把这个数组一一的代入到函数给我们计算,但是上述代码是行不通的,因为birthyear就是一个单个的数据,我们无法把数据传上去;即使我们把他打印出来也不会是一串很正常的数据

const calcAge = function (birthYear) {
  return 2037 - birthYear;
};

const years = [1990, 1998, 2001, 2023];
console.log(calcAge(years));

在这里插入图片描述

● 那么我们讲如何计算呢?可以一步步计算

const calcAge = function (birthYear) {
  return 2037 - birthYear;
};

const years = [1990, 1998, 2001, 2023];
const age1 = calcAge(years[0]);
const age2 = calcAge(years[1]);
const age3 = calcAge(years[2]);
console.log(age1, age2, age3);

在这里插入图片描述

● 同样的,我们也可以把age123也存入一个数据里面

const calcAge = function (birthYear) {
  return 2037 - birthYear;
};

const years = [1990, 1998, 2001, 2023];
const age1 = calcAge(years[0]);
const age2 = calcAge(years[1]);
const age3 = calcAge(years[2]);
console.log(age1, age2, age3);

const ages = [calcAge(years[0]), calcAge(years[1]), calcAge(years[2])];
console.log(ages);

在这里插入图片描述

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

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

相关文章

mysql 间隙锁原理深度详解

目录 一、前言 二、mysql之mvcc 2.1 什么是mvcc 2.2 mvcc组成 2.2.1 Undo log 多版本链 2.2.2 ReadView 2.2.3 快照读与当前读 三、RR级别下的事务问题 3.1 RR隔离级别解决的问题 3.1.1 幻读问题 3.2 幻读效果演示 3.2.1 准备测试表和数据 3.2.2 修改事务级别 3.…

2017. 网格游戏;2397. 被列覆盖的最多行数;2202. K 次操作后最大化顶端元素

2017. 网格游戏 核心思想:前缀和枚举。读完题后可以发现,第一个机器人走的路线就像一条分割线,第二个机器人只能获得上面白色部分或者下面白色部分的最大值。这个最大值怎么求,我们可以通过前缀和来求,然后通过枚举转…

【探索C++】输入输出

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮&#xff0…

【模拟】算法实战

文章目录 一、算法原理二、算法实战1. leetcode1576 替换所有的问号2. leetcode495 提莫攻击3. leetcode6 N字形变换4. leetcode38 外观数列5. leetcode1419 数青蛙 三、总结 一、算法原理 模拟就是用计算机来模拟题目中要求的操作,模拟题目通常具有代码量大、操作…

网络编程套接字(4):日志和守护进程

文章目录 网络编程套接字(4): 日志和守护进程5. 增加日志功能6. 守护进程6.1 进程知识补充(1) 进程组(2) 任务(3) 会话 6.2 守护进程(1) 概念(2) 创建守护进程 网络编程套接字(4): 日志和守护进程 5. 增加日志功能 接着上篇的内容,增加日志功能可以更好地&#xf…

16.WebSocket聊天室

基于SpringBoot 2.6.11 1.WebSocket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议,可以在html页面直接使用。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket A…

2021年12月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:书架 John最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。 John共有N头奶牛(1 ≤ N ≤ 20,000),每头奶牛有自己的高度Hi(1 ≤ Hi ≤ 10,000),N头奶牛的总高度为S。书架高度为B(1 ≤…

亚马逊云科技 云技能孵化营——我的云技能之旅

文章目录 每日一句正能量前言活动流程后记 每日一句正能量 不能在已经获得足够多的成功时,还对自己的能力保持怀疑,露出自信的微笑,走出自信的步伐,做一个自信的人! 前言 亚马逊云科技 (Amazon Web Services) 是全球云…

Kao框架学习

中间件:洋葱模型 这是官网上给出的示例,从logger依次往下执行,执行到最底层的response往回退,结构很像同心圆的洋葱从外层向内层再由内层向外层。 next表示暂停当前层的代码进入下一层, 当最后一层执行完毕开始回溯&a…

学习完毕JavaSE的感想

今天,把Java复习完毕了,之前学习的时候,学校里学的总是有限的 ,自己上手操作之后才发觉差的很多,部署服务器发现要学操作系统,学完了web基础 ,又发现还得学前后端分离vue react这些,…

基于ensp的中大型企业网络安全解决方案的设计与实施

一、需求背景 公司部门具体背景:公司共设有人事部、财务部、销售部、市场部四个部门以及一个员工宿舍楼,公司有对外互联网业务需要提供。公司内存在重要部门需要保护数据安全以及访问控制。 (1)根据客户需求、部门、拓扑&#xf…

代码搜索技巧

在IDE中搜索代码时,经常会被相近的无关代码干扰,如筛选所有使用协程的代码段, 可见有大量“噪音”。 可使用IDE提供的正则表达式功能 如 使用 \bgo ,即匹配go开头的,且之后为空格的所有选项 使用 \bgo func,即匹配到了所有使用协程…

C++学习vector

1,把list的相关函数都实现出来(未完) 2, 运行结果:

等保测评各个级别的详细内容

等保测评是指信息系统安全等级保护测评,是我国信息安全领域中的一项重要工作。根据国家标准《信息系统安全等级保护基本要求》(GB/T 22239-2008)和《信息系统安全等级保护测评技术要求》(GB/T 25070-2010)。 等保测评分为五个级别,分别是:一级…

达梦数据库管理用户和创建用户介绍

概述 本文主要对达梦数据库管理用户和创建用户进行介绍和总结。 1.管理用户介绍 1.1 达梦安全机制 任何数据库设计和使用都需要考虑安全机制,达梦数据库采用“三权分立”或“四权分立”的安全机制,将系统中所有的权限按照类型进行划分,为每…

JZ12 矩阵中的路径

剑指Offer编程链接:JZ12 题目描述: 思路:递归回溯的方法,总结一下什么情况需要使用递归: 递归在解决问题时,通常涉及以下情况: 问题可被分解为较小的相似子问题。子问题与原问题具有相同的结…

eclipse设置字体大小

打开IDE,选择window->perferences 选择颜色与字体,选择basic 选中text-font之后选择编辑 选择合适的大小之后选择应用并关闭即可 结果

权限提升-Windows本地提权-AT+SC+PS命令-进程迁移-令牌窃取-getsystem+UAC

权限提升基础信息 1、具体有哪些权限需要我们了解掌握的? 后台权限,网站权限,数据库权限,接口权限,系统权限,域控权限等 2、以上常见权限获取方法简要归类说明? 后台权限:SQL注入,数…

ELK日志收集系统

一、概述 1、ELK由三个组件构成 2、作用 日志收集 日志分析 日志可视化 3、为什么使用? 日志对于分析系统、应用的状态十分重要,但一般日志的量会比较大,并且比较分散。 如果管理的服务器或者程序比较少的情况我们还可以逐一…