当前位置: 首页 > news >正文

JavaScript第七讲:数组,及练习题

目录

今天话不多说直接进入正题!

1. 创建数组对象

2. 数组长度

3. 遍历一个数组

4. 连接数组

5. 通过指定分隔符,返回一个数组的字符串表达

6. 分别在最后的位置插入数据和获取数据(获取后删除)

7. 分别在最开始的位置插入数据和获取数据(获取后删除)

8. 对数组的内容进行排序

9. 自定义排序算法

10. 对数组的内容进行反转

11. 获取子数组

12. 删除和插入元素

删除元素

插入元素

替换元素

练习题

源代码

小结


今天话不多说直接进入正题!

1. 创建数组对象

在JavaScript中,你可以通过以下方式创建数组:

// 使用数组字面量  
let array1 = [1, 2, 3, 4, 5];  // 使用Array构造函数  
let array2 = new Array(1, 2, 3, 4, 5);  // 创建一个空数组  
let array3 = [];

2. 数组长度

使用length属性来获取或设置数组的长度:

let array = [1, 2, 3];  
console.log(array.length); // 输出 3  // 设置长度可以添加或删除元素  
array.length = 2; // 现在数组只包含 [1, 2]

3. 遍历一个数组

你可以使用for循环、for...of循环或forEach方法来遍历数组:

let array = [1, 2, 3, 4, 5];  // 使用for循环  
for (let i = 0; i < array.length; i++) {  console.log(array[i]);  
}  // 使用for...of循环  
for (let element of array) {  console.log(element);  
}  // 使用forEach方法  
array.forEach(function(element) {  console.log(element);  
});

4. 连接数组

使用concat方法连接两个或多个数组:

let array1 = [1, 2, 3];  
let array2 = [4, 5, 6];  
let array3 = array1.concat(array2);  
console.log(array3); // 输出 [1, 2, 3, 4, 5, 6]

5. 通过指定分隔符,返回一个数组的字符串表达

使用join方法,通过指定分隔符将数组元素转换为字符串:

let array = ['a', 'b', 'c'];  
let str = array.join(','); // 使用逗号作为分隔符  
console.log(str); // 输出 "a,b,c"

6. 分别在最后的位置插入数据和获取数据(获取后删除)

使用push方法添加元素到数组末尾,使用pop方法移除并返回数组的最后一个元素:

let array = [1, 2, 3];  
array.push(4); // 添加元素 4 到末尾  
console.log(array); // 输出 [1, 2, 3, 4]  let lastElement = array.pop(); // 移除并返回最后一个元素  
console.log(lastElement); // 输出 4  
console.log(array); // 输出 [1, 2, 3]

7. 分别在最开始的位置插入数据和获取数据(获取后删除)

使用unshift方法添加元素到数组开始,使用shift方法移除并返回数组的第一个元素:

let array = [2, 3, 4];  
array.unshift(1); // 添加元素 1 到开始  
console.log(array); // 输出 [1, 2, 3, 4]  let firstElement = array.shift(); // 移除并返回第一个元素  
console.log(firstElement); // 输出 1  
console.log(array); // 输出 [2, 3, 4]

8. 对数组的内容进行排序

使用sort方法对数组进行排序。默认情况下,它会将数组元素转换为字符串,然后按照字符的Unicode码点进行排序:

let array = [5, 1, 4, 2, 3];  
array.sort(); // 默认排序,可能会得到不期望的结果  
console.log(array); // 输出 [1, 2, 3, 4, 5] 或其他,取决于浏览器实现  // 使用自定义比较函数进行排序  
array.sort(function(a, b) {  return a - b; // 升序排序  
});  
console.log(array); // 输出 [1, 2, 3, 4, 5]

9. 自定义排序算法

在JavaScript中,数组的sort()方法允许你传入一个自定义的比较函数,以实现自定义排序。这个比较函数应该接收两个参数,并返回一个负数、零或正数,分别表示第一个参数应该排在第二个参数之前、相等或之后。

let array = [5, 1, 4, 2, 3];  // 自定义升序排序  
array.sort(function(a, b) {  return a - b;  
});  
console.log(array); // 输出 [1, 2, 3, 4, 5]  // 自定义降序排序  
array.sort(function(a, b) {  return b - a;  
});  
console.log(array); // 输出 [5, 4, 3, 2, 1]

10. 对数组的内容进行反转

数组的reverse()方法用于反转数组中的元素顺序。

let array = [1, 2, 3, 4, 5];  
array.reverse();  
console.log(array); // 输出 [5, 4, 3, 2, 1]

11. 获取子数组

数组的slice()方法用于提取数组的一部分浅拷贝到一个新数组对象,并返回这个新数组。原数组不会被改变。

let array = [1, 2, 3, 4, 5];  // 从索引1开始,提取到索引3(不包括索引3的元素)  
let subArray = array.slice(1, 3);  
console.log(subArray); // 输出 [2, 3]  // 如果只提供一个参数,则从该索引开始到数组末尾  
let endArray = array.slice(2);  
console.log(endArray); // 输出 [3, 4, 5]

12. 删除和插入元素

在JavaScript中,数组的splice()方法是一种非常强大的工具,它可以在任何位置添加/删除项目,并返回被删除的项目。

删除元素
let array = [1, 2, 3, 4, 5];  // 从索引1开始,删除2个元素  
let removedItems = array.splice(1, 2);  
console.log(array); // 输出 [1, 4, 5]  
console.log(removedItems); // 输出 [2, 3],这是被删除的元素
插入元素
let array = [1, 4, 5];  // 在索引1的位置插入2和3  
array.splice(1, 0, 2, 3); // 第二个参数为0,表示不删除任何元素  
console.log(array); // 输出 [1, 2, 3, 4, 5]
替换元素
let array = [1, 2, 3, 4, 5];  // 从索引1开始,替换2个元素为6和7  
array.splice(1, 2, 6, 7);  
console.log(array); // 输出 [1, 6, 7, 4, 5]

注意:splice()方法会直接修改原数组。如果你不希望原数组被改变,可以先使用slice()方法复制一份数组,再在新数组上使用splice()

练习题

编写一个JavaScript程序,该程序完成以下任务:

  1. 创建一个包含5个随机整数的数组(范围在1到100之间)。
  2. 使用sort()方法和自定义比较函数对该数组进行降序排序。
  3. 使用slice()方法获取数组的前三个元素,并存储在新的数组中。
  4. 使用splice()方法在原始数组的第二个位置插入一个新元素(值为100)。
  5. 使用reverse()方法反转原始数组。
  6. 输出原始数组、排序后的数组、子数组、插入元素后的数组以及反转后的数组。

源代码

// 1. 创建一个包含5个随机整数的数组(范围在1到100之间)  
let originalArray = [];  
for (let i = 0; i < 5; i++) {  originalArray.push(Math.floor(Math.random() * 100) + 1);  
}  
console.log('原始数组:', originalArray);  // 2. 使用sort()方法和自定义比较函数对该数组进行降序排序  
originalArray.sort(function(a, b) {  return b - a;  
});  
console.log('排序后的数组:', originalArray);  // 3. 使用slice()方法获取数组的前三个元素,并存储在新的数组中  
let subArray = originalArray.slice(0, 3);  
console.log('子数组:', subArray);  // 4. 使用splice()方法在原始数组的第二个位置插入一个新元素(值为100)  
originalArray.splice(1, 0, 100);  
console.log('插入元素后的数组:', originalArray);  // 5. 使用reverse()方法反转原始数组  
originalArray.reverse();  
console.log('反转后的数组:', originalArray);

运行这段代码,你会看到控制台输出了题目要求的各个数组。注意,由于Math.random()的使用,每次运行程序时原始数组的内容都会不同。

小结

今天就到这里了,期待下次相遇!

respect!

相关文章:

JavaScript第七讲:数组,及练习题

目录 今天话不多说直接进入正题&#xff01; 1. 创建数组对象 2. 数组长度 3. 遍历一个数组 4. 连接数组 5. 通过指定分隔符&#xff0c;返回一个数组的字符串表达 6. 分别在最后的位置插入数据和获取数据(获取后删除) 7. 分别在最开始的位置插入数据和获取数据(获取后删…...

从docker镜像反推Dockerfile

在项目运维的过程中&#xff0c;偶尔会遇到某个docker image打包时候的Dockerfile版本管理不善无法与image对应的问题&#xff0c;抑或需要分析某个三方docker image的构建过程&#xff0c;这时&#xff0c;就希望能够通过image反推构建时的instruction. 想实现这个过程可以使…...

车载软件架构 - AUTOSAR 的信息安全框架

车载软件架构 - AUTOSAR 的信息安全架构 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗…...

欧洲版“OpenAI”——Mistral 举办的 AI 大模型马拉松

近期&#xff0c;法国的 Mistral AI 举办了一场别开生面的 AI 大模型马拉松。要知道&#xff0c;Mistral 可是法国对 OpenAI 的有力回应&#xff0c;而且其技术还是完全开源的呢&#xff01;这场在巴黎举行的黑客马拉松&#xff0c;规模空前盛大&#xff0c;竟然有超过 1000 名…...

Java | Leetcode Java题解之第128题最长连续序列

题目&#xff1a; 题解&#xff1a; class Solution {public int longestConsecutive(int[] nums) {Set<Integer> num_set new HashSet<Integer>();for (int num : nums) {num_set.add(num);}int longestStreak 0;for (int num : num_set) {if (!num_set.contai…...

C++的List

List的使用 构造 与vector的区别 与vector的区别在于不支持 [ ] 由于链表的物理结构不连续,所以只能用迭代器访问 vector可以排序,list不能排序(因为快排的底层需要随机迭代器,而链表是双向迭代器) (算法库里的排序不支持)(需要单独的排序) list存在vector不支持的功能 链…...

网易有道QAnything使用CPU模式和openAI接口安装部署

网易有道QAnything可以使用本地部署大模型&#xff08;官网例子为qwen&#xff09;也可以使用大模型接口(OPENAI或者其他大模型AI接口 )的方式&#xff0c;使用在线大模型API接口好处就是不需要太高的硬件配置。 本机环境windows11 首先安装WSL环境, 安装方法参考https://zhuan…...

量子加速超级计算简介

本文转载自&#xff1a;量子加速超级计算简介(2024年 3月 13日) By Mark Wolf https://developer.nvidia.cn/zh-cn/blog/an-introduction-to-quantum-accelerated-supercomputing/ 文章目录 一、概述二、量子计算机的构建块&#xff1a;QPU 和量子位三、量子计算硬件和算法四、…...

Unity3D 基于YooAssets的资源管理详解

前言 Unity3D 是一款非常流行的游戏开发引擎&#xff0c;它提供了丰富的功能和工具来帮助开发者快速创建高质量的游戏和应用程序。其中&#xff0c;资源管理是游戏开发中非常重要的一部分&#xff0c;它涉及到如何有效地加载、管理和释放游戏中的各种资源&#xff0c;如模型、…...

Linux 自动化升级Jar程序,指定Jar程序版本进行部署脚本

文章目录 一、环境准备二、脚本1. 自动化升级Jar程序2. 指定Jar程序版本进行部署总结一、环境准备 本文在 CentOS 7.9 环境演示,以springboot为例,打包后生成文件名加上版本号,如下打包之后为strategy-api-0.3.2.jar: pom.xml<?xml version="1.0" encoding=&…...

python练习五

Title1&#xff1a;请实现一个装饰器&#xff0c;每次调用函数时&#xff0c;将函数名字以及调用此函数的时间点写入文件中 代码&#xff1a; import time time time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 获取当前的时间戳 # 定义一个有参装饰器来实…...

YOLOv1深入解析与实战:目标检测算法原理

参考&#xff1a; https://zhuanlan.zhihu.com/p/667046384 https://blog.csdn.net/weixin_41424926/article/details/105383064 https://arxiv.org/pdf/1506.02640 1. 算法介绍 学习目标检测算法&#xff0c;yolov1是必看内容&#xff0c;不同于生成模型&#xff0c;没有特别…...

Apache Calcite - 自定义标量函数

前言 上一篇文章中我们介绍了calcite中内置函数的使用。实际需求中会遇到一些场景标准内置函数无法满足需求&#xff0c;这时候就需要用到自定义函数。在 Apache Calcite 中添加自定义函数&#xff0c;以便在 SQL 查询中使用自定义的逻辑。这对于执行特定的数据处理或分析任务…...

STM32作业实现(四)光敏传感器

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…...

HTML+CSS 文本动画卡片

效果演示 实现了一个图片叠加文本动画效果的卡片&#xff08;Card&#xff09;布局。当鼠标悬停在卡片上时&#xff0c;卡片上的图片会变为半透明&#xff0c;同时显示隐藏在图片上的文本内容&#xff0c;并且文本内容有一个从左到右的渐显动画效果&#xff0c;伴随着一个白色渐…...

MongoDB CRUD操作: 在本地实例进行文本搜索查询

MongoDB CRUD操作&#xff1a; 在本地实例进行文本搜索查询 文章目录 MongoDB CRUD操作&#xff1a; 在本地实例进行文本搜索查询举例创建集合创建文本索引精准搜索排除短语结果排序 在本地实例运行文本搜索查询前&#xff0c;必须先在集合上建立文本索引。MongoDB提供文本索引…...

文档智能开源软件

文档智能介绍&#xff1a; 文档智能通常指的是利用人工智能技术来处理和分析文档内容&#xff0c;以实现自动化、智能化的文档管理。文档智能的应用领域非常广泛&#xff0c;包括但不限于&#xff1a; 1. **文档识别**&#xff1a;使用OCR&#xff08;光学字符识别&#xff0…...

[C][可变参数列表]详细讲解

目录 1.宏含义及使用2.宏原理分析1.原理2.宏理解 1.宏含义及使用 依赖库stdarg.hva_list 其实就是char*类型&#xff0c;方便后续按照字节进行指针移动 va_start(arg, num) 使arg指向可变参数部分(num后面) va_arg(arg, int) 先让arg指向下个元素&#xff0c;然后使用相对位置…...

54. 螺旋矩阵【rust题解】

题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 示例 1 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2 输入&#xff1a;matrix [[1,2,3,4],[5,6,…...

学习笔记——网络参考模型——TCP/IP模型(传输层)

四、TCP/IP模型-传输层 一、TCP 1、TCP定义 TCP(Transmission Control Protocol&#xff0c;传输控制协议)∶为应用程序提供可靠的面向连接的通信服务。目前&#xff0c;许多流行的应用程序都使用TCP。 连接&#xff1a;正式发送数据之前&#xff0c;提前建立好一种虚拟的&…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...