『JavaScript』全面掌握JavaScript数组的操作、方法与高级技巧

请添加图片描述

请添加图片描述
📣读完这篇文章里你能收获到

  • 学习JavaScript中数组的基本操作
  • 掌握JavaScript数组的多种内置方法
  • 了解JavaScript中的数组扩展运算符、Array.from()和Array.of()等实用技巧
  • 熟悉如何在JavaScript中使用数组方法进行数据处理

请添加图片描述

文章目录

  • 一、基本操作
    • 1. 创建数组
    • 2. 访问和修改元素
    • 3. 数组长度
  • 二、数组方法
  • 三、实用技巧
    • 1. 数组展开运算符
    • 2. Array.from()和Array.of()

在JavaScript中,数组是一种特殊类型的对象,用于存储有序的数据集合。本文将详细介绍JavaScript中的数组技术,包括基本操作、方法和一些实用技巧。

一、基本操作

1. 创建数组

在JavaScript中,可以使用以下方式创建数组:

let arr1 = [1, 2, 3, 4, 5];
let arr2 = new Array(10); // 创建一个长度为10的空数组

2. 访问和修改元素

可以使用方括号[]来访问和修改数组中的元素:

let arr = [1, 2, 3, 4, 5];

console.log(arr[0]); // 输出:1
arr[0] = "Hello";
console.log(arr); // 输出:["Hello", 2, 3, 4, 5]

3. 数组长度

使用length属性可以获得数组的长度:

let arr = [1, 2, 3, 4, 5];
console.log(arr.length); // 输出:5

注意:修改length属性可以改变数组的长度,但需要注意这可能会导致数据丢失。

二、数组方法

JavaScript为数组提供了一系列内置方法,以下是一些常用的方法:

方法名描述
push(element1, …, elementN)将一个或多个元素添加到数组的末尾,并返回新的长度
pop()删除并返回数组的最后一个元素
shift()删除并返回数组的第一个元素
unshift(element1, …, elementN)在数组的开头添加一个或多个元素,并返回新的长度
splice(start[, deleteCount, item1, …, itemX])删除元素并/或添加新元素到数组中,并返回被删除的元素
slice(start[, end])提取数组的一部分,并返回新的数组
concat(array2, …, arrayN)连接一个或多个数组,并返回新的数组
join([separator])将数组转换为字符串,元素由指定的分隔符连接
reverse()颠倒数组中元素的顺序
sort([compareFunction])对数组元素进行排序,默认升序
indexOf(searchElement[, fromIndex])返回指定元素首次出现的索引,未找到则返回-1
lastIndexOf(searchElement[, fromIndex])返回指定元素最后一次出现的索引,未找到则返回-1
includes(searchElement[, fromIndex])检查数组是否包含指定的元素,返回布尔值
forEach(callback[, thisArg])对数组中的每个元素执行一次提供的函数
map(callback[, thisArg])创建一个新数组,其结果是调用提供的函数在每个元素上的结果
filter(callback[, thisArg])创建一个新数组,其中包含通过测试的所有元素
reduce(callback[, initialValue])对数组中的每个元素执行一个由你提供的reducer函数(升序执行),将其结果汇总为单个返回值
reduceRight(callback[, initialValue])对数组中的每个元素执行一个由你提供的reducer函数(降序执行),将其结果汇总为单个返回值

以下是一些示例代码:

let arr = [1, 2, 3, 4, 5];

arr.push(6);
console.log(arr); // 输出:[1, 2, 3, 4, 5, 6]

let lastElement = arr.pop();
console.log(lastElement); // 输出:6
console.log(arr); // 输出:[1, 2, 3, 4, 5]

arr.unshift("First");
console.log(arr); // 输出:["First", 1, 2, 3, 4, 5]

let removedElements = arr.splice(2, 1, "Two", "Three");
console.log(removedElements); // 输出:[3]
console.log(arr); // 输出:["First", 1, "Two", "Three", 4, 5]

let slicedArr = arr.slice(1, 4);
console.log(slicedArr); // 输出:[1, "Two", "Three"]

let joinedStr = arr.join(", ");
console.log(joinedStr); // 输出:"First, 1, Two, Three, 4, 5"

arr.reverse();
console.log(arr); // 输出:[5, 4, "Three", "Two", 1, "First"]

arr.sort((a, b) => a - b);
console.log(arr); // 输出:[1, "First", "Three", "Two", 4, 5]

console.log(arr.indexOf(4)); // 输出:4
console.log(arr.includes("Two")); // 输出:true

arr.forEach((item, index) => console.log(`${index}: ${item}`));
// 输出:
// 0: 1
// 1: First
// 2: Three
// 3: Two
// 4: 4
// 5: 5

let mappedArr = arr.map(item => item * 2);
console.log(mappedArr); // 输出:[2, "First", "Three", "Two", 8, 10]

let filteredArr = arr.filter(item => typeof item === "number");
console.log(filteredArr); // 输出:[1, 4, 5]

let reducedValue = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(reducedValue); // 输出:25

三、实用技巧

1. 数组展开运算符

在ES6中引入了数组展开运算符(Spread syntax),它允许将一个数组或可迭代对象的内容扩展到其他数组或函数调用中。

let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];

let combinedArr = [...arr1, ...arr2]; // 输出:[1, 2, 3, 4, 5, 6]

2. Array.from()和Array.of()

Array.from()和Array.of()是两个用于创建数组的静态方法。

let arrFrom = Array.from("Hello"); // 输出:["H", "e", "l", "l", "o"]
let arrOf = Array.of(1, 2, 3); // 输出:[1, 2, 3]

请添加图片描述

请添加图片描述

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

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

相关文章

【Spring实战】07 JPA

文章目录 1. 定义2. 出现原因3. 添加依赖4. 使用1)创建 Repository 接口2)自定义查询方法(非必须)3)创建实体类4)调用方法 5. 验证6. 优点7. 缺点8. 详细代码总结 1. 定义 Spring Data JPA 是 Spring 提供…

IP 地址归属地查询

IP 地址归属地查询 1. IP 地址归属地查询2. IP 地址归属地查询References 1. IP 地址归属地查询 https://tool.lu/ip/index.html 2. IP 地址归属地查询 https://www.ip.cn/ip/.html References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

OpenAI GPT 模型 API 接口新增参数 top_logprobs 和 logprobs

文章目录 一、前言二、主要内容三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 在最新的 OpenAI 官方 APIs 文档中,Create chat completion 中新增了 top_logprobs 和 logprobs 这两个关键参数。 官方文档地址&#xff…

掌握ElasticSearch(一):Elasticsearch安装与配置、Kibana安装

文章目录 〇、简介1.Elasticsearch简介2.典型业务场景3.数据采集工具4.名词解释 一、安装1.使用docker(1)创建虚拟网络(2)Elasticsearch安装步骤 2.使用压缩包 二、配置1.目录介绍2.配置文件介绍3.elasticsearch.yml节点配置4.jvm.options堆配置 二、可视化工具Kibana1.介绍2.安…

MuJava提供的方法级别的7类变异算子总结

MuJava简洁 Java (muJava) 是 Java 程序的变异系统。 它自动生成用于传统突变测试和类级别突变测试的突变体。 Java 可以测试单个类和多个类的包。 用户以对封装在单独 JUnit 类的方法中的被测类的方法调用序列的形式提供测试。 官网地址:Java Home Page 归档表格…

计算机网络面试题目

概述: 1、协议和服务之间的区别(协议是水平的,服务是垂直的) 2、计算机网络有那些层 应用层通过主机中进程的交互完成特定的网络应用。运输层提供两台主机间的进程之间的通信。网络层对传输层传下来的数据包封装,通过路…

使用 GPT4V+AI Agent 做自动 UI 测试的探索

一、背景 从 Web 诞生之日起,UI 自动化就成了测试的难点,到现在近 30 年,一直没有有效的手段解决Web UI测试的问题,尽管发展了很多的 webdriver 驱动,图片 diff 驱动的工具,但是这些工具的投入产出比一直被…

VMware虚拟机的安装配置

目录 一. VMware虚拟机的安装 二. VMware配置虚拟机 三. VMware安装windows server 2012 一. VMware虚拟机的安装 1. 双击安装,点击下一步 2. 勾选接受许可,点击下一步 3. 选择安装位置,点击下一步 4. 用户体验设置(可选&#…

【三维目标检测】【自动驾驶】IA-BEV:基于结构先验和自增强学习的实例感知三维目标检测(AAAI 2024)

系列文章目录 论文:Instance-aware Multi-Camera 3D Object Detection with Structural Priors Mining and Self-Boosting Learning 地址:https://arxiv.org/pdf/2312.08004.pdf 来源:复旦大学 英特尔Shanghai Key Lab /美团 文章目录 系列文…

张江智荟毁约offer

毕业8年后,找工作被国企歧视学历!已经收到了offer,在入职前一周被通知要撤回offer,拒绝录用,理由居然是他们只要本科211以上的人 这是我今天(2023-12-26)亲身经历的事,听说过面试前…

string类的函数讲解

标准库中的string类 首先关于string类的了解,我先给出官方的string类的讲解,以便于大家的学习:链接: http://www.cplusplus.com/reference/string/string/?kwstring 这个网站是C官方网站,里面对于各个关键字和库函数的讲解都是很…

鸿蒙开发中的一些小问题

这是我在学习鸿蒙开发中遇见的小问题 Q1&#xff1a;This custom component must have a build function. <etsLint>Q2&#xff1a;page_title is not translated into en_US(American English)Q3&#xff1a;Module "../CustomComponent/CustomButton" declar…

【论文解读】Learning based fast H.264 to H.265 transcoding

时间&#xff1a; 2015 年 级别&#xff1a; APSIPA 机构&#xff1a; 上海电力大学 摘要 新提出的视频编码标准HEVC (High Efficiency video coding)以其比H.264/AVC更好的编码效率&#xff0c;被工业界和学术界广泛接受和采用。在HEVC实现了约40%的编码效率提升的同时&…

CP2102 驱动安装指南

现在的电脑上已经很少有串口了&#xff0c;在嵌入式开发中经常使用 USB 转串口芯片作为电脑与嵌入式板卡通信的桥梁&#xff0c;CP2102 是一款常见的高端 USB 转串口芯片&#xff0c;要在电脑上使用该芯片功能需要安装驱动程序。 驱动下载 从 官网下载&#xff1a; 驱动安装 安…

HTML5+CSS3+JS小实例:网页手电筒

实例:网页手电筒 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><m…

DBAPI个人版如何升级到企业版

安装好企业版软件&#xff0c;并启动 注意要新建mysql数据库&#xff0c;执行新版本的ddl_mysql.sql脚本 在旧版本系统中分别导出数据源、分组、API&#xff0c;得到3个json文件 注意全选所有的数据导出 在新版本系统中导入数据源 在新版本系统中导入分组 进入分组管理菜单&…

ioDraw AI:思维导图、流程图、序列图、类图、饼图,一应俱全

前言 在信息爆炸的时代&#xff0c;我们每天接收着大量的信息&#xff0c;如何高效地整理和呈现这些信息成为了一项重要的挑战。思维导图作为一种可视化思维工具&#xff0c;能够帮助我们快速构建和整理复杂的信息结构&#xff0c;便于我们理解和记忆。ioDraw AI绘图工具正是基…

跟着LearnOpenGL学习12--光照贴图

文章目录 一、前言二、漫反射贴图三、镜面光贴图3.1、采样镜面光贴图 一、前言 在跟着LearnOpenGL学习11–材质中&#xff0c;我们讨论了让每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样子能够很容易在一个光照的场景中给每个物体一个独特的外观&#xf…

Java学习:多线程编程

一、概念 进程&#xff1a;它是运行中的程序。有的程序启动后可能有多个进程。Java程序的执行时&#xff0c;首先启动一个独立的JVM进程。该进程任务是解析并执行Java字节码。进程各有独立地址空间&#xff0c;JVM进程间不能访问对方所拥有内存空间。 线程&#xff1a;一个进程…

ros2中ros_gz_bridge/gazebo安装的注意事项

这个搞错了&#xff1a;这个是安装ros_gz_bridge的&#xff0c;不是安装gazebo的 AT:如果是安装的Harmonic&#xff0c;在安装ros_gz_bridge的时候要从源码编译 ros2完整版里面好像已经包含了gazebo的一个版本 包名应该就是叫ros-humble-ros-ign-gazebo 所以gazebo是作为一个普…