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

JavaScript 内置对象-数组对象

在JavaScript中,数组(Array)是一种非常重要的数据结构,它允许我们以列表的形式存储多个值,并提供了丰富的内置方法来操作这些值。无论是处理简单的数值集合还是复杂的对象数组,数组对象都能提供强大的支持。本文将详细介绍数组对象的创建、基本操作以及一些常用的高级方法。

一、创建数组

使用字面量语法

最常见也是最直接的方式是使用方括号[]来创建一个数组:

let fruits = ['Apple', 'Banana', 'Cherry'];
console.log(fruits); // 输出: ["Apple", "Banana", "Cherry"]

使用构造函数

另一种方式是通过调用 Array 构造函数来创建数组:

let numbers = new Array(1, 2, 3);
console.log(numbers); // 输出: [1, 2, 3]

注意:当只传递一个参数给 Array 构造函数时,这个参数会被解释为数组的长度而不是元素值。

二、访问和修改数组元素

数组中的每个元素都有对应的索引位置,从0开始计数。可以通过索引来访问或修改数组中的元素。

访问元素

let colors = ['Red', 'Green', 'Blue'];
console.log(colors[0]); // 输出: Red
console.log(colors[2]); // 输出: Blue

修改元素

colors[1] = 'Yellow';
console.log(colors); // 输出: ["Red", "Yellow", "Blue"]

三、常用数组方法

添加和删除元素

  • push():向数组末尾添加一个或多个元素,并返回新的长度。
  • pop():移除并返回数组的最后一个元素。
  • unshift():向数组开头添加一个或多个元素,并返回新的长度。
  • shift():移除并返回数组的第一个元素。
let stack = [];
stack.push('First');
stack.push('Second');
console.log(stack.pop()); // 输出: Second
console.log(stack.shift()); // 输出: First

合并与分割

  • concat():合并两个或更多数组,不会改变现有数组,而是返回一个新数组。
  • join():将所有数组元素连接成一个字符串,默认使用逗号作为分隔符。
let arr1 = ['a', 'b'];
let arr2 = ['c', 'd'];
let combined = arr1.concat(arr2);
console.log(combined.join('-')); // 输出: a-b-c-d

搜索与查找

  • indexOf():返回第一个找到的指定元素的位置,如果没有找到则返回-1。
  • includes():判断数组是否包含某个指定的值,返回布尔值。
  • find():返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined
  • findIndex():返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。
let numbers = [1, 2, 3, 4];
console.log(numbers.indexOf(3)); // 输出: 2
console.log(numbers.includes(5)); // 输出: false
console.log(numbers.find(x => x > 2)); // 输出: 3
console.log(numbers.findIndex(x => x === 4)); // 输出: 3

排序

  • sort():对数组元素进行排序,默认按字符串顺序升序排列。可以通过传递比较函数自定义排序规则。
  • reverse():颠倒数组中元素的顺序。
let nums = [4, 2, 6, 8, 1];
nums.sort((a, b) => a - b);
console.log(nums); // 输出: [1, 2, 4, 6, 8]
nums.reverse();
console.log(nums); // 输出: [8, 6, 4, 2, 1]

迭代

  • forEach():对数组的每一个元素执行一次提供的函数。
  • map():创建一个新数组,其结果是对原数组中的每个元素都执行提供的函数后的返回值。
  • filter():创建一个新数组,其包含通过所提供函数实现的测试的所有元素。
  • reduce():对数组中的每个元素执行一个reducer函数(由你提供),将其结果汇总为单个返回值。
let values = [1, 2, 3, 4];
values.forEach(value => console.log(value));
let doubled = values.map(value => value * 2);
console.log(doubled); // 输出: [2, 4, 6, 8]
let even = values.filter(value => value % 2 === 0);
console.log(even); // 输出: [2, 4]
let sum = values.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 输出: 10

四、数组的高级特性

扁平化数组

  • flat():按照一个可指定的深度递归遍历数组,并将所有元素与子数组元素合并为一个新数组返回。
let nested = [1, [2, 3], [4, [5, 6]]];
console.log(nested.flat(2)); // 输出: [1, 2, 3, 4, 5, 6]

填充数组

  • fill():用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。
let empty = [,,];
empty.fill(7);
console.log(empty); // 输出: [7, 7, 7]

结语

感谢您的阅读!如果您对JavaScript的数组对象或者其他相关话题有任何疑问或见解,欢迎继续探讨。

相关文章:

JavaScript 内置对象-数组对象

在JavaScript中,数组(Array)是一种非常重要的数据结构,它允许我们以列表的形式存储多个值,并提供了丰富的内置方法来操作这些值。无论是处理简单的数值集合还是复杂的对象数组,数组对象都能提供强大的支持。…...

在linux系统中安装Anaconda,并使用conda

系统 : ubuntu20.04 显卡:NVIDIA GTX1650 目录 安装Anaconda第一步:下载合适版本的Anconda1. 查看自己Linux的操作系统及架构命令:uname -a2. 下载合适版本的Anconda 第二步:安装Aanconda1. 为.sh文件设置权限2. 执行.sh文件2.1 .…...

机械学习基础-5.分类-数据建模与机械智能课程自留

data modeling and machine intelligence - CLASSIFICATION 为什么我们不将回归技术用于分类?贝叶斯分类器(The Bayes Classifier)逻辑回归(Logistic Regression)对逻辑回归的更多直观理解逻辑 /sigmoid 函数的导数我们…...

静态页面在安卓端可以正常显示,但是在ios打开这个页面就需要刷新才能显示全图片

这个问题可能有几个原因导致,我来分析一下并给出解决方案: 首要问题是懒加载实现方式的兼容性问题。当前的懒加载实现可能在 iOS 上不够稳定。建议修改图片懒加载的实现方式: // 使用 Intersection Observer API 实现懒加载 function initLazyLoading() {const imageObserver…...

代码随想录刷题攻略---动态规划---子序列问题1---子序列

子序列(不连续)和子序列(连续)的问题 例题1: 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的…...

八股取士--dockerk8s

一、Docker 基础 Docker 和虚拟机的区别是什么? 答案: 虚拟机(VM):虚拟化硬件,每个 VM 有独立操作系统,资源占用高,启动慢。Docker:容器化应用,共享宿主机内核…...

ubuntu系统下KVM设置桥接网络(失败)

20250216 - 概述 因实验需求,需要设置KVM下的虚拟机采用桥接模式进行通信,这种方式将使虚拟机与主机类似使用同一网段的IP。实际上,为了实现这个功能,我已经在自己mac上VMware使用过,虚拟机获得了自己独立的IP。 但…...

【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析④】

ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase04 作者:车端域控测试工程师 更新日期:2025年02月15日 关键词:UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023 TC10-004测试用例 用例ID测试场景验证要点参考条款预期…...

OpenAI 放王炸,将发布整合多项技术的 GPT-5,并免费无限使用,该模型有哪些技术亮点

对于 ChatGPT 的免费用户,将可以无限制地访问 GPT-5,但仅限于标准的智能级别。该级别会设定滥用限制,以防止不当使用(意思就是你得付费嘛)。 OpenAI CEO Sam Altman 今天在 X 上透露了 GPT-4.5 和 GPT-5 的最新发展计划。 OpenAI 将发布代…...

C 语言版--销售预测项目案例分享

以下是一个 C 语言销售预测项目案例,该项目模拟根据历史销售数据使用简单的移动平均法来预测未来的销售额。移动平均法是一种常见且基础的时间序列预测方法,它通过计算一定时间段内数据的平均值来预测未来的值。 项目需求 给定一系列历史销售数据,使用简单移动平均法预测下…...

用deepseek学大模型05-线性回归

deepseek.com:多元线性回归的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点,及如何改进解决及改进方法数据推…...

DC-7靶机渗透测试全过程

目录 前期准备 一、渗透测试 1.IP地址查询 2.端口地址收集 3.网页信息收集 社工收集信息 Drush直接修改账户密码 下载PHP插件 反弹shell 二、总结 前期准备 攻击机 : kali windows11 靶机: DC-7(调至NAT模式) 一、渗透测试 1.IP地址查询 …...

什么是服务的雪崩、熔断、降级的解释以及Hystrix和Sentinel服务熔断器的解释、比较

1.什么是服务雪崩? 定义:在微服务中,假如一个或者多个服务出现故障,如果这时候,依赖的服务还在不断发起请求,或者重试,那么这些请求的压力会不断在下游堆积,导致下游服务的负载急剧…...

解决IDEA报错:java 找不到符号

问题:IIDEA编译项目一直报 例如 java: 找不到符号 符号: 方法 getUserId()异常 的错误 解决方法: 1、刷新maven 2、clean package...

基于SpringBoot的医院药房管理系统【源码+答辩PPT++项目部署】高质量论文1-1.5W字

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...

Ubuntu22.04通过Docker部署Jeecgboot

程序发布环境包括docker、mysql、redis、maven、nodejs、npm等。 一、安装docker 1、用如下命令卸载旧Docker: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done 2、安装APT环境依赖包…...

基于Ubuntu+vLLM+NVIDIA T4高效部署DeepSeek大模型实战指南

一、 前言:拥抱vLLM与T4显卡的强强联合 在探索人工智能的道路上,如何高效地部署和运行大型语言模型(LLMs)一直是一个核心挑战。尤其是当我们面对资源有限的环境时,这个问题变得更加突出。原始的DeepSeek-R1-32B模型虽…...

力扣 66.加一 (Java实现)

题目分析 给定一个数组,可以组成一个数字,将数字加一后,返回新数组 思路分析 首先跟着题目思路走,将数组按位*10可以得到数字,再加一,加一后按位%10,可以得到新的数组。但是此处数字会过大&…...

Deep seek学习日记1

Deepseek最强大的就是它的深度思考,并且展现了它的思考过程。 五种可使用Deep seek的方式(应该不限于这五种,后续嵌入deepseek的应该更多,多了解一点因为官网容易崩~~): 1.deep seek官网 2.硅基流动silicon…...

npm 私服使用介绍

一、导读 本文主要介绍 npm 私服的使用,至于 npm 私服搭建的过程,可以看本人之前的文章《Docker 部署 verdaccio 搭建 npm 私服》 二、前置条件 npm私服地址:http://xxx.xxx.xxx.xxx:port/ 三、本地 npm 源切换 使用nrm,可以方…...

github用户名密码登陆失效了

问题: git push突然推代码需要登陆,但是用户名和密码正确输入后,却提示403 git push# Username for https://github.com: **** #Password for https://gyp-programmergithub.com: #remote: Permission to gyp-programmer/my-app.git denie…...

SpringCloud整合seata,XA、AT、TCC、SAGA模式

参考资料: SpringCloud-Alibaba搭建 SpringCloud-nacos整合 Seata部署 参考demo(及学习资料) seata官网 参考视频​​​​​c(AT模式的UNDO_LOG讲的可能有点问题,但是很通俗易懂) 参考视频2&#xff…...

centos8.0 docker ngnix

问题1:镜像拉取不下来,用DAO云加速器 问题2:ngnix镜像不能运行, 无法检索OCI运行时错误 ,更新包yum update libseccomp 问题3:docker run -v 目录有ngninx.conf 或conf.d 等 .特殊字符,报无效格…...

案例-06.部门管理-根据ID查询

一.根据ID查询-接口文档 二.根据ID查询-Controller层 package com.gjw.controller;/*** 部门管理Controller*/import com.gjw.anno.Log; import com.gjw.pojo.Dept; import com.gjw.pojo.Result; import com.gjw.service.DeptService; import com.gjw.service.impl.DeptServi…...

moveable 一个可实现前端海报编辑器的 js 库

目录 缘由-胡扯本文实验环境通用流程1.基础移动1.1 基础代码1.1.1 data-* 解释 1.2 操作元素创建1.3 css 修饰1.4 cdn 引入1.5 js 实现元素可移动1.6 图片拖拽2.缩放3.旋转4.裁剪 懒得改文案了,海报编辑器换方案了,如果后面用别的再更。 缘由-胡扯 导火…...

【愚公系列】《Python网络爬虫从入门到精通》012-字符串处理

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

shell脚本备份MySQL数据库和库下表

目录 注意: 一.脚本内容 二.执行效果 三.创建定时任务 注意: 以下为对MySQL5.7.42版本数据库备份shell脚本参考运行备份的机器请确认mysqldump版本>5.7,否则备份参数--set-gtid-purgedOFF无效,考虑到一般数据库节点和备份…...

java处理pgsql的text[]类型数据问题

背景 公司要求使用磐维数据库,于是去了解了这个是基于PostgreSQL构建的,在使用时有场景一条图片数据中可以投放到不同的页面,由于简化设计就放在数组中,于是使用了text[]类型存储;表结构 #这是一个简化版表结构&…...

MongoDB 架构设计:深入解析核心组件与工作原理

MongoDB 架构设计:深入解析核心组件与工作原理 MongoDB 作为一个高性能、易扩展的 NoSQL 数据库,其优秀的架构设计是其成功的关键。本文将深入解析 MongoDB 的架构设计,详细讲解其核心组件和工作原理,帮助您更好地理解和使用 Mon…...

【PostgreSQL】PG在windows下的安装

一、准备 通过官网下载安装文件,官方下载路径如下: https://www.postgresql.org/download/windows/ 二、安装 双击postgresql-17.3-1-windows-x64.exe文件,启动安装,进入安装步骤,点击Next 选择PG安装路径&#xff…...