(day 10)JavaScript学习笔记(数组1)

概述

        这是我的学习笔记,记录了JavaScript的学习过程。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过JavaScript,那么这一系列的学习笔记可能会对你有所帮助。

        今天来学习数组,主要是创建数组、访问数组、添加元素、删除元素、遍历数组。

1.创建数组 

        数组是有序的数据集合,创建数组有以下几种方式: 

① 用数组的字面值创建,如下代码示意:

//用数组的字面值创建
let arr1 = [1, 2, 3, 4];
console.log(arr1, typeof arr1);

运行结果如下:

  1. (4) [1, 2, 3, 4] 'object'

② 使用构造函数,如下代码:

//使用构造函数
let arr2 = new Array(5, 6, 7, 8);

③用Array创建,如下代码:


//用Array创建
let arr3 = Array(7, 8, 9);

④ 使用Array.of 创建

// 使用Array.of创建
arr4 = Array.of(10, 11, 12);

        如果只有一个元素,只能用字面值和Array.of创建,如下代码是创建只有一个元素的数组:

// 创建只有一个元素的数组
let arr5 = [5];
console.log(arr5); //输出:[5]

// 创建只有一个元素的数组
let arr6 = Array.of(6);
console.log(arr6); //输出:[6]

        用构造函数和Array创建只有一个元素的数组,得到的是n个空元素的数组,如下代码:

let arr7 = Array(6); //表示定义数组的长度
console.log(arr7); //返回: (6) [empty × 6]
let arr8 = new Array(7); //表示定义数组的长度
console.log(arr8); //返回: (7) [empty × 7]

        创建空数组可以通过以上4种任意方法即可,如下代码:

//创建空数组
let arr9 = [];
console.log(arr9); //输出:[]

let arr10 = new Array();
console.log(arr10); //输出:[]

let arr11 = Array.of();
console.log(arr11); //输出:[]

let arr12 = Array();
console.log(arr12); //输出:[]

PS:数组有点类似Python中的列表,Python中列表的相关操作可详见本人另外的博文。

Python中列表的相关操作

2.访问数组

        访问数组可以用索引来访问,JavaScript中的数组和Python中的列表一样,他里面的元素都有索引值,索引值从左往右是从0开始到数组的长度减一,从右往左是-1、-2、-3这样的。

        获取数组长度语法是:数组名.length,如下代码演示:

let arr = [1, 2, 3, 4];
console.log(arr.length); //获取数组长度,输出:4

         用索引值获取元素语法为:数组名[索引值],如下代码演示:

let arr = ["Python", "Java", "C++", "JavaScript"];
console.log(arr.length); //获取数组长度,输出:4
console.log(arr[0]); //输出:Python
console.log(arr[1]); //输出:Java
console.log(arr[2]); //输出:C++
console.log(arr[3]); //输出:JavaScript

        如果获取元素时候索引值不存在,会返回undefined,如下代码:

console.log(arr[4]); //如果不存在,返回undefined

3.添加元素

        添加元素可以直接指定位置添加,如果这个位置有值的话,原来的值就会被新的值覆盖,如果新的位置大于数组的长度,数组会自动添加长度,并且用空的值来填充空位,如下代码演示:

let arra = [1, 2, 3];
arra[0] = 5;
console.log(arra); //输出:(3) [5, 2, 3]

arra[3] = 6;
console.log(arra); //输出:(4) [5, 2, 3, 6]

arra[8] = 10; //索引值远远大于数组长度
console.log(arra); //自动添加了空元素,输出:(9) [5, 2, 3, 6, empty × 4, 10]

4.删除元素

        如果要删除数组中最后一个元素,可以直接改变数组长度的值,如下代码演示:

let arrDel = [1, 2, 3];
console.log("删除前的数组:", arrDel);
arrDel.length = 2; //改变列表长度
console.log("删除后的数组:", arrDel);
/*
上面代码运行结果如下:
删除前的数组: (3) [1, 2, 3]
删除后的数组: (2) [1, 2]
 */

        如果清空数组,可以直接将数组长度设置为0,如下代码:

arrDel.length = 0; //清空数组
console.log(arrDel); //输出:[]

        删除数组中固定位置的元素可以用数组的splice方法,它接收两个固定的参数,一个参数为要删除元素的索引值,第二个元素是要删除的数量,后面的参数是要增加的元素,语法结构如下:

        数组名.splice(删除元素的索引值,删除的数量,增加的元素1,增加的元素2,增加的元素3……)

        下面是代码示例:

let arrDel2 = ["apple", "banana", "orange", "pear"];
arrDel2.splice(2, 1); //表示在索引值为2的位置开始删除元素,删除元素数量为1
console.log(arrDel2); // 输出:(3) ['apple', 'banana', 'pear']

arrDel2.splice(1, 2, "watermelon", "grape", "mango");
//上面代码表示在索引值为1的位置删除两个元素,再增加'watermelon','grape','mango'三个元素
console.log(arrDel2); // 输出:(4) ['apple', 'watermelon', 'grape', 'mango']

         数组的splice方法还可以给任意位置添加数组,只需要把删除的数量参数设置为0即可,如下代码:

arrDel2.splice(1, 0, "bamboo", "cherry"); //在1的位置增加'bamboo','cherry'
console.log(arrDel2); // 输出:(6) ['apple', 'bamboo', 'cherry', 'watermelon', 'grape', 'mango']

5.遍历数组

        数组遍历有三种方式,第一种是用for循环,如下代码示例:

//第一种方式:for循环
console.log("第一种方式:for循环"); //增加一个分割
let arrErg = [1, 3, 5, 7, 9];
for (let i = 0; i < arrErg.length; i++) {
  console.log(arrErg[i]);
}

        第二中方式是用for...of 循环,如下代码演示:

//第二种方式:for……of循环
console.log("第二种方式:for of循环"); //增加一个分割
for (let ele of arrErg) {
  console.log(ele);
}

        JavaScript中的for……of循环与Python中的for……in 循环类似,代码比较急简洁,但是它没有计数的功能,因此要根据自己的需求选用不同的遍历方式。

        第三种方式用数组的forEach方法,这个方法接收一个回调,它会给回调函数三个参数,第一个是当前遍历到的元素,第二个是当前遍历到的索引,第三个是数组本身,如下代码演示:

//第三种方式:forEach方法
console.log("第三种方式:forEach方法"); //增加一个分割
arrErg.forEach((ele, index, self) => {
  console.log(ele, index, self);
});

        上面代码运行结果如下:

1 0 (5) [1, 3, 5, 7, 9]
3 1 (5) [1, 3, 5, 7, 9]
5 2 (5) [1, 3, 5, 7, 9]
7 3 (5) [1, 3, 5, 7, 9]
9 4 (5) [1, 3, 5, 7, 9]

        上面每一行第一个数是遍历到的元素,第二个数是索引值,后面是数组本身。

        如果只传一个参数,默认是遍历到的元素,如下代码演示:

console.log("如果只传一个参数,默认是遍历到的元素");
arrErg.forEach((ele) => {
  console.log(ele);
});

         运行结果如下:

1
3
5
7
9

        上面我们用的都是箭头函数,前一天我们学过了函数的相关知识,顺便也复习一下,把上面的箭头函数改成普通函数,是这样的:

//下面是把箭头函数改写成普通函数的样子
arrErg.forEach(fun);
function fun(ele, index, self) {
  console.log(ele, index, self);
}

        以上便是今天的学习内容,如果对你有所帮助就点个赞再走吧。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java8中Stream流API最佳实践Lambda表达式使用示例

文章目录 一、创建流二、中间操作和收集操作筛选 filter去重distinct截取跳过映射合并多个流是否匹配任一元素&#xff1a;anyMatch是否匹配所有元素&#xff1a;allMatch是否未匹配所有元素&#xff1a;noneMatch获取任一元素findAny获取第一个元素findFirst归约数值流的使用中…

在线BLOG网|基于springboot框架+ Mysql+Java+JSP技术的在线BLOG网设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研究…

C语言学习过程总结(18)——指针(6)

一、数组指针变量 在上一节中我们提到了&#xff0c;指针数组的存放指针的数组&#xff0c;那数组指针变量是什么呢&#xff1f; 显而易见&#xff0c;数组指针变量是指针 同样类比整型指针变量和字符指针变量里面分别存放的是整型变量地址和字符变量地址&#xff0c;我们可以…

每周AI新闻(2024年第11周)Meta公布Llama 3集群细节 | Sora将于年内推出 | 全球首个AI软件工程师发布

这里是陌小北&#xff0c;一个正在研究硅基生命的碳基生命。正在努力成为写代码的里面背诗最多的&#xff0c;背诗的里面最会写段子的&#xff0c;写段子的里面代码写得最好的…厨子。 每周日解读每周AI大事件。 欢迎关注同名公众号【陌北有棵树】&#xff0c;关注AI最新技术…

第二十四天-数据可视化Matplotlib

目录 1.介绍 2.使用 1. 安装&#xff1a; 2.创建简单图表 3.图表类型 1.一共分为7类 2.变化 1.折线图 3.分布 ​编辑 1.直方图 2.箱型图 4.关联 1. 散点图&#xff1a; 2.热力图&#xff1a; 5.组成 1.饼图 2.条形图 6.分组 1.簇型散点图 2.分组条形图 3.分…

【ollama】linux、window系统更改模型存放位置,全网首发2024!

首先是window系统 so easy 直接进入系统环境变量添加就行 其次是linux系统 全靠自己试出来的,去Ollama官网找半天文档不知道在哪,而且linux也没有说:【 https://github.com/ollama/ollama/blob/main/docs/README.md https://github.com/ollama/ollama/blob/main/docs/li…

Ubuntu 如何安装 Beyond Compare?

Ubuntu20.04安装Beyond Compare 4.3.7 一、官网下载方式一&#xff1a;方法二&#xff1a;使用 .deb 包安装 二、安装相关依赖和bcompare三、破解常见错误解决方法 ) 文件比较工具Beyond Compare是一套由Scooter Software推出的文件比较工具。主要用途是对比两个文件夹或者文件…

HCIA——30奈奎斯特定理、香农定理

学习目标&#xff1a; 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextTimer)

通过文本显示计时信息并控制其计时器状态的组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 TextTimer(options?: TextTimerOptions) 参数&#xff1a; 参数名参数类型…

Kotlin进阶之协程从入门到放弃

公众号「稀有猿诉」 原文链接 Kotlin进阶之协程从入门到放弃 协程Coroutine是最新式的并发编程范式&#xff0c;它是纯编程语言层面的东西&#xff0c;不受制于操作系统&#xff0c;轻量级&#xff0c;易于控制&#xff0c;结构严谨&#xff0c;不易出错&#xff0c;易于…

深入浅出理解 AI 生图模型

目录 引言 一、Stable Diffusion原理 首先 随后 最后 二、DDPM模型 1 资料 2 原理 扩散过程 反向过程 3 公式结论 三、优缺点 优点&#xff1a; 缺点&#xff1a; 四、改进与完事 LDM代表作 原理概括 Latent Space&#xff08;潜空间&#xff09; 五、总结 引…

提高安全投资回报:威胁建模和OPEN FAIR™风险分析

对大多数人和企业来说&#xff0c;安全意味着一种成本。但重要的是如何获得适合的量&#xff0c;而不是越多越好。然而&#xff0c;你如何决定什么时候可以有足够的安全性&#xff0c;以及你如何获得它&#xff1f;则完全是另一回事。 该篇文章是由The Open Group安全论坛主办&…

【PyTorch】进阶学习:一文详细介绍 load_state_dict() 的应用场景、实战代码示例

【PyTorch】进阶学习&#xff1a;一文详细介绍 load_state_dict() 的应用场景、实战代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入…

vb.net+zxing.net随机彩色二维码、条形码

需要zxing库支持ZXing.NET Generate QR Code & Barcode in C# Alternatives | IronBarcode 效果图&#xff1a; 思路&#xff1a;先生成1个单位的二维码&#xff0c;然后再通过像素填充颜色&#xff0c;颜色数组要通过洗牌算法 洗牌算法 Dim shuffledCards As New List(…

C#控制台贪吃蛇

Console.Write("");// 第一次生成食物位置 // 随机生成一个食物的位置 // 食物生成完成后判断食物生成的位置与现在的蛇的身体或者障碍物有冲突 // 食物的位置与蛇的身体或者障碍物冲突了&#xff0c;那么一直重新生成食物&#xff0c;直到生成不冲突…

GenAI开源公司汇总

主要分类如下&#xff1a; 1. 基础模型&#xff1a;这些是机器学习和AI的核心模型提供商&#xff0c;它们提供基础的算法和技术支持。 2. 模型部署与推断&#xff1a;提供云服务和计算资源&#xff0c;帮助用户部署和运行AI模型。 3. 开发者工具&#xff1a;支持AI/ML的开发…

【网络原理】TCP 协议中比较重要的一些特性(三)

目录 1、拥塞控制 2、延时应答 3、捎带应答 4、面向字节流 5、异常情况处理 5.1、其中一方出现了进程崩溃 5.2、其中一方出现关机&#xff08;正常流程的关机&#xff09; 5.3、其中一方出现断电&#xff08;直接拔电源&#xff0c;也是关机&#xff0c;更突然的关机&am…

拜占庭将军问题相关问题

1、拜占庭将军问题基本描述 问题 当我们讨论区块链共识时&#xff0c;为什么会讨论拜占庭将军问题&#xff1f; 区块链网络的本质是一个分布式系统&#xff0c;在存在恶意节点的情况下&#xff0c;希望 整个系统当中的善良节点能够对于重要的信息达成一致&#xff0c;这个机…

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习:计时和文件处理-给算法计时-上机代码

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习&#xff1a;计时和文件处理-给算法计时-上机代码 上机代码&#xff1a; # 基本扩展模块训练 给算法计时 def factorial(number): # 自定义一个计算阶乘的函数i 1result 1 # 变量 result 用来存储每个数的阶…

第十三篇:复习Java面向对象

文章目录 一、面向对象的概念二、类和对象1. 如何定义/使用类2. 定义类的补充注意事项 三、面向对象三大特征1. 封装2. 继承2.1 例子2.2 继承类型2.3 继承的特性2.4 继承中的关键字2.4.1 extend2.4.2 implements2.4.3 super/this2.4.4 final 3. 多态4. 抽象类4.1 抽象类4.2 抽象…