学习javascript的数组

1.什么是数组?

数组:(Array)是一种数据类型,属于引用数据类型。

作用:在单个变量名下存储多个数据

2.声明语法

let 数组名 =[数据1,数据2......];

注意事项:

数组是按照顺序保存(是有序的),所以,每一个数据都有自己的编号。

编号从0开始,数据的编号经常称为索引或下标。

数组可以存储任意类型的数据。

3.数组元素取值

数组名[索引];

   <script>//创建数组- 初始化数组let names =['张三','李四','王五'];//获取数组元素alert(names[0]);</script>

4.遍历数组

把数组中每个数据都访问到。

使用for循环遍历数组

数组的长度:通过数组.length属性获取。

<script>//创建数组- 初始化数组let names =['张三','李四','王五'];//获取数组元素// alert(names[0]);for(let i =0;i<names.length;i++){alert(names[i]);}</script>

5.demo 求数据的和和平均数,最大值和最小值

<script>let arr = [15, 20, 23, 22];let sum = 0;let maxNum = arr[0];let mixNum = arr[0];//如果要比较大小,可以不从0开始,重复比较了,但是这里笔者写在一起了for (let i = 0; i < arr.length; i++) {sum += arr[i];if (arr[i] < mixNum) {mixNum = arr[i];}if (arr[i] > maxNum) {maxNum = arr[i];}}console.log("数组的和:" + sum);console.log("数组的平均数:" + sum / arr.length);console.log("数组的最大值:" + maxNum);console.log("数组的最小值:" + mixNum);</script>

6.操作数组-增删改查

数组的本质就是数据集合,增删改查。

查询语法:

数组[索引];

如果查询不到就会返回undefined

修改数组元素

数组[索引] = 新值;

返回值:如果下标不存在,则是新增加一个元素,并且修改数组的长度。(这样做尽量避免)

新增元素

方法一:数组.push(新增元素);

作用:将一个或者多个元素添加到数组的末尾。

返回值:该数组的新长度,会修改原数组

    <script>//数组元素的新增let names =['张三','李四','王五'];//方法一:pushnames.push('赵六');names.push('姚明','刘翔');console.log(names);
//['张三', '李四', '王五', '赵六', '姚明', '刘翔']</script>

方法二:数组.unshift(新增数据);

作用:将一个或者多个元素添加到数组的开头。

返回值:该数组的新长度,会修改原数组

    <script>//数组元素的新增let names =['张三','李四','王五'];//省略方法一;。。。//方法二:unshiftnames.unshift('张飞');names.unshift('刘备','关羽');console.log(names);
//['刘备', '关羽', '张飞', '张三', '李四', '王五', '赵六', '姚明', '刘翔']</script>

删除元素

方法一:数组.pop();

作用:从数组中删除最后一个元素,修改原数组

返回值:该元素的值

方法二:数组.shift();

作用:从数组中删除第一个元素,修改原数组

返回值:该元素的值。

//数组元素的删除//方法一:数组名.pop();names.pop();console.log(names);//方法二:数组名.shift();names.shift();console.log(names);

数组.splice()方法 可以添加也可以删除数组元素。

说明:可以从指定位置删除或者增加数组的数组元素,注意它修改原数组。

做删除使用:splice(start,deleteCount);

返回被删除的元素。

start:起始位置,指定修改的开始位置(从0计数)

deleteCount:删除个数,表示要移除的数组元素的个数,可选的。如果省略则默认从指定的其实位置删除到最后。

做增加使用:splice(start,deleteCount,item1....);

 <script>let names =['张三','李四','王五'];//做删除使用names.splice(0,2);console.log(names);//做增加使用names.splice(1,0,'赵六','老七');console.log(names);</script>

7.demo 数组筛选

需求:将数组[10,23,5,12,84,65,11,12,36,0]中大于等于10的元素选出来,放入新数组中。

  <script>let arr = [10, 23, 5, 12, 84, 65, 11, 12, 36, 0];let newArr = [];for (let i = 0; i < arr.length; i++) {if(arr[i]>=10){newArr.push(arr[i]);}}console.log(newArr);</script>

需求:将数组[10,0,23,0,5,12,0,84,65,11,12,36,0]进行筛选,形成一个不包含0的新数组。

 <script>let arr = [10,0,23,0,5,12,0,84,65,11,12,36,0];let newArr =[];for(let i=0;i<arr.length;i++){if(arr[i]!==0){newArr.push(arr[i]);}}console.log(newArr);</script>

8.数组排序

数组.sort();方法可以排序

语法:数组.sort();会修改原数组

 <script>let arr = [15, 2, 65, 21, 333, 57, 1, 25, 69];//升序排列arr.sort(function(a,b){return a-b;});console.log(arr);//降序排列arr.sort(function(a,b){return b-a;});console.log(arr);</script>

9.选择排序

原理:就是从第一个数开始,与后面所有的数组比较,找出最小(最大)的数,放在第一个位置。依次类推,每一个确定一个相对于这一轮最小(最大)的数。

核心:利用循环嵌套比较,根据索引号来进行交换变量

①:外层循环是一共进行几轮比较,一共进行数组长度-1次进行比较

for(let i=0;i<arr.length-1;i++)

把i作为最小值起始索引minIndex

②:里层循环是每一轮的比较来查找最小值

里层循环起始值是i+1个元素开始查找

for(let j=1;j<arr.length;j++)

进行比较的时候 ,发现最小的数组元素,把当前元素索引号给minIndex

③:如果minIndex和i位置不一致,则交换变量。

<script>let arr=[11,8,22,15,3,31,20];//1.循环嵌套的方式 外层循环 控制比较次数for(let i =0;i<arr.length;i++){//2.定义一个变量,这个变量保存假定的最小数组元素的indexlet MinIndex = i;//外层循环 拿着第一个数,和每一个数做比较for(let j=i+1;j<arr.length;j++){if(arr[j]<arr[MinIndex]) {//如果假定的最小值,比当前这一项还大,那么就保存索引MinIndex = j;}}//4.交换位置if(MinIndex !== i){//如果最小值的索引不等于原来的索引,那么就证明拿到新的最小值let temp =arr[MinIndex];arr[MinIndex] = arr[i];arr[i]=temp;}}console.log(arr);</script>

10.总结

以上文章是笔者的学习笔记,如果您在浏览或者运行代码的时候发现了错误,还请您在第一时间在评论区留言,笔者会在第一时间解决,谢谢。

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

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

相关文章

企业级大数据平台建设方案

企业级大数据平台建设方案 方案简介硬件软件分布式存储&#xff1a;Foreman作为集群管理工具Sparkcloudera 方案简介 该方案是多年前在Roadstar.ai任职时的建设方案&#xff0c;现将方案部分细节开源&#xff0c;结合本博客的其他文章&#xff0c;能够建立可靠的企业大数据平台…

来盘点我的校园生活(4)

今天我们班出大事了&#xff01; 今天英语老师没来&#xff0c;我们以为其他英语老师来了&#xff0c;但下午一去办公室&#xff0c;我小脑直接萎缩&#xff0c;我都看得怀疑人生了&#xff0c;一个英语老师没有&#xff0c;作业咋办呢&#xff1f; 后来通过18班班主任英语老…

ollama导入自己微调后的模型胡言乱语

1.ollama导入自己微调后的模型胡言乱语 原因&#xff1a;Modelfile的模板格式不对&#xff0c;对的如下所示 ##格式0FROM tinyllama-my-model.gguf### Set the system message SYSTEM """ You are a super helpful helper. """PARAMETER stop …

VBA语言専攻每周通知20240524

通知20240524 各位学员∶本周MF系列VBA技术资料增加611-615讲&#xff0c;T3学员看到通知后请免费领取,领取时间5月24日晚上18:00-5月26日晚上18:00。本次增加内容&#xff1a; MF611:用InputBox录入日期 MF612:信息提示10秒后关自动关闭 MF613:只是信息提示10秒 MF614:显…

代码随想录算法跟练 | Day3 | 链表Part1

个人博客主页&#xff1a;http://myblog.nxx.nx.cn 代码GitHub地址&#xff1a;https://github.com/nx-xn2002/Data_Structure.git Day3 203.移除链表元素 题目链接&#xff1a; https://leetcode.cn/problems/remove-linked-list-elements/ 题目描述&#xff1a; 给你一个…

如何解决Nginx反向代理不生效?

目录 背景 过程 日志 检查配置文件 重启服务 检查容器内的配置文件 容器和宿主机 其他 背景 用了两年的nginx新加的反向代理不生效 Docker挂载的配置文件启动的Nginx&#xff0c;配置一切正常&#xff0c;但是反向代理不生效&#xff0c;???先自查一波 过程 日志 …

【FAQ】HarmonyOS SDK 闭源开放能力 —Ads Kit

1.问题描述&#xff1a; 开屏广告效果最好的实现方式&#xff1f; 解决方法&#xff1a; 1、动画效果和开发者的实现方式有关&#xff0c;和开屏广告页面本身没什么关系的&#xff1b; 2、示例代码中使用Router跳转的方式展示广告&#xff0c;主要是用于演示广告接口怎么集…

RDDM论文阅读笔记

CVPR2024的残差去噪模型。把diffusion 模型的加噪过程分解为残差diffusion和noise diffusion&#xff0c;其中残差diffusion模拟从target image到degraded image的过程&#xff0c;而noise diffusion则是原来的diffusion过程&#xff0c;即从图片到高斯噪声的加噪过程。前者可以…

rocketmq 学习一

官方文档&#xff1a;RocketMQ 官方网站 | RocketMQ 一 介绍 RocketMQ 诞生于 2012 年&#xff0c;诞生即开源。2012&#xff5e;2015 年&#xff0c;RocketMQ 一直在通过内部电商业务打磨自身服务能力,并在 2015 年于阿里云上线公测。2016 年&#xff0c;阿里云 RocketMQ 完…

如何让社区版IDEA变得好用

如何让社区版IDEA变得好用 背景 收费版的idea功能非常强大&#xff0c;但是费用高。社区版的免费&#xff0c;但是功能被阉割了。如何才能让社区版Idea变得好用&#xff0c;就需要各种插件支持了。经过全局配置编码&#xff0c;maven&#xff0c;jdk版本&#xff0c;在加上各…

《扑克牌游戏》

描述 有一个扑克牌游戏&#xff0c;游戏规则是不断地摸牌&#xff0c;尽可能地使手上的牌的点数接近于10&#xff0c;最完美的情况是总点数为10&#xff0c;不可以超过10&#xff0c;否则就爆了。输入10张牌的点数&#xff0c;(每张点数不超过10)&#xff0c;请你输出用户应该抓…

架构二。。

1、CAP 只能3选2 1&#xff09;一致性&#xff08;Consistency&#xff09; 客户每次读都是返回最新的写操作结果 2&#xff09;可用性&#xff08;Availability&#xff09; 非故障节点在合理的时间内返回合理的响应 3&#xff09;分区容忍性&#xff08;Partition Tolerance…

Ribbon负载均衡(自己总结的)

文章目录 Ribbon负载均衡负载均衡解决的问题不要把Ribbon负载均衡和Eureka-Server服务器集群搞混了Ribbon负载均衡代码怎么写ribbon负载均衡依赖是怎么引入的&#xff1f; Ribbon负载均衡 负载均衡解决的问题 首先Ribbon负载均衡配合Eureka注册中心一块使用。 在SpringCloud…

lua函数执行和虚拟机指令

Stack based vs Register based VM 可直接参考 Stack based vs Register based VM lua函数调用 先看一下lua函数的结构&#xff1a; /* ** Function Prototypes */ typedef struct Proto {CommonHeader;TValue *k; /* constants used by the function */Instruction *code;…

计算机网络之应用层知识点总结

6.1 网络应用模型 &#xff08;1&#xff09;应用层概述 &#xff08;2&#xff09;网络应用模型的介绍 客户/服务器&#xff08;C/S&#xff09;模型 P2P模型 6.2 域名解析系统DNS &#xff08;1&#xff09;DNS系统介绍 &#xff08;2&#xff09;域名 &#xff08;3&#…

面试字节大模型算法实习岗,感觉有点崩溃。。。

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接…

学习平台|基于Springboot+vue的学习平台系统的设计与实现(源码+数据库+文档)

学习平台系统 目录 基于Springboot&#xff0b;vue的学习平台系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3学生功能模块 4教师功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八…

不小心丢失mfc140u.dll文件怎么办?mfc140u.dll丢失的解决办法

当您发现mfc140u.dll文件不见了或者受损&#xff0c;别担心&#xff0c;我们可以一起解决这个问题&#xff01;首先&#xff0c;您可能会注意到一个小提示&#xff0c;当您尝试打开某些程序时&#xff0c;屏幕上会跳出一个消息说“找不到mfc140u.dll”或者“mfc140u.dll文件缺失…

解决docker中container运行闪退终止的问题

在运行bindmount-test时&#xff0c;点击完运行按钮后闪退结束运行。 第一步查看log日志&#xff1a; 2024-05-18 23:46:18 Error: Cannot find module /app/nodemon 2024-05-18 23:46:18 at Function.Module._resolveFilename (internal/modules/cjs/loader.js:668:15) …

2024-5-24 石群电路-15

2024-5-24&#xff0c;星期五&#xff0c;22:15&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。今天最后一天上班&#xff0c;终于要放返校假啦&#xff0c;开心&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;不过放假也不能耽误…