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)是一种非常重要的数据结构,它允许我们以列表的形式存储多个值,并提供了丰富的内置方法来操作这些值。无论是处理简单的数值集合还是复杂的对象数组,数组对象都能提供强大的支持。…...
Qt——连接MySQL数据库之ODBC的方法详细总结(各版本大同小异,看这一篇就够了)
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》 《实用硬件方案设计》 《结构建模设…...
进程令牌:Windows 安全架构中的关键元素
一、进程令牌概述 进程令牌(Process Token)是 Windows 操作系统中一个重要的安全机制,它包含了与进程安全上下文相关的详细信息。每个进程在执行时都会关联一个进程令牌,令牌用于确定该进程可以访问哪些资源以及能执行哪些操作。…...
基于springboot的超时代停车场管理平台(源码+文档)
大家好我是风歌,曾担任某大厂java架构师,如今专注java毕设领域。今天要和大家聊的是一款基于springboot的超时代停车场管理平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于Spring Boot的超时代停车场…...
缓存穿透、缓存击穿、缓存雪崩的区别与解决方案
1. 缓存穿透(Cache Penetration) 定义:大量请求查询 数据库中不存在的数据,导致请求绕过缓存直接访问数据库,造成数据库压力过大。 场景: 恶意攻击:例如用不存在的用户ID频繁请求。 业务误操作…...
箭头函数的this指向谁
先看1个重要原则: 由Vue管理的函数,一定不要写箭头函数,箭头函数的this就不再是Vue实例了 箭头函数的 this 指向在定义时确定,继承自外层作用域(即定义时的上下文)的 this,且无法通过 call、app…...
【愚公系列】《Python网络爬虫从入门到精通》012-字符串处理
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...
【Python】01-基础
目录 1、命令行简介1.1 命令行结构1.2 常用dos指令 2、环境变量2.1 查看2.2 添加2.3 修改2.4 删除 3、path环境变量4、进制5、文本文件和字符集6、Sublime使用 1、命令行简介 命令行就是文本交互页面,通过命令行可以使用指令来操作计算机 1.1 命令行结构 版本及版…...
Java-DFS(深度优先搜索)
原理 深度优先搜索的基本思路是从一个节点开始,依次访问它的每一个邻居节点,直到达到一个没有未被访问的邻居的节点为止。这个过程可以使用递归或者栈来实现。其特点是尽可能深入每一个分支,然后再回溯。 DFS算法常用于解决以下类型的问题&…...
AI大模型编程能力对比:DeepseekClaudeGemini
在当今快速发展的技术领域,人工智能(AI)模型在编程和数据处理方面的应用越来越广泛。不同的AI模型因其独特的设计理念和技术优势,适用于不同的编程任务和场景。 本文将对三种主流的AI模型——DeepSeek v3、Gemini Flash 2.0 和 C…...
用C++实现点到三角形最小距离的计算
1、全部代码 #include <iostream> #include <cmath> #include <array> #include <algorithm>// 二维点结构体 struct Point2D {double x, y;Point2D(double x 0, double y 0) : x(x), y(y) {} };// 计算点到线段的最小距离 double pointToSegmen…...
解决前后端日期传输因时区差异导致日期少一天的问题
前端处理 1. 发送日期字符串而非时间戳 在前端使用日期选择器(如 el-date-picker)获取日期后,将日期转换为特定格式的字符串(如 YYYY-MM-DD)发送给后端,避免直接发送带有时区信息的时间戳或日期对象。这样…...
mmsegmentation自己的数据集+不同网络的config配对
比如说我们要用这个网络: 我们发现他内部继承了很多类,要想配对我们的数据集,就要进行父类的修改。 ../_base_/models/deeplabv3_unet_s5-d16.py, ../_base_/datasets/drive.py,../_base_/default_runtime.py, ../_base_/schedules/schedule…...
Golang官方编程指南
文章目录 1. Golang 官方编程指南2. Golang 标准库API文档 1. Golang 官方编程指南 Golang 官方网站:https://go.dev/ 点击下一步,查看官方手册怎么用 https://tour.go-zh.org/welcome/1 手册中的内容比较简单 go语言是以包的形式化管理函数的 搜索包名…...
ram的使用——初始化很重要
背景 ram是非常常用的ip,前人的经验告诉我们,如果不对ram进行初始化直接读写,不定态在实际上板时会出现不可预知的问题。 我们需要对ram进行初始化写0操作,代码如下。需要注意,复位释放时立马写入可能存在复位抖动的…...
doris:最佳实践
异步物化视图使用原则 时效性考虑: 异步物化视图通常用于对数据时效性要求不高的场景,一般是 T1 的数据。如果时效性要求高,应考虑使用同步物化视图。 加速效果与一致性考虑: 在查询加速场景,创建物化视图时&#x…...
[创业之路-299]:图解金融体系结构
一、金融体系结构 1.1 概述 金融体系结构是一个国家以行政的、法律的形式和运用经济规律确定的金融系统结构,以及构成这个系统的各种类型的银行和非银行金融机构的职能作用和相互关系。以下是对金融体系结构的详细分析: 1、金融体系的构成要素 现代金…...
RL--2
强化学习当中最难的两个点是: 1.reward delay; 2.agent的行为会影响到之后看到的东西,所以agent要学会探索世界; 关于强化学习的不同类型,可以分为以下三种: 一种是policy based:可以理解为它是…...
[JVM篇]分代垃圾回收
分代垃圾回收 分代收集法是目前大部分 JVM 所采用的方法,其核心思想是根据对象存活的不同生命周期将内存划分为不同的域,一般情况下将 GC 堆划分为老生代(Tenured/Old Generation)和新生代(Young Generation)。老生代的特点是每次垃圾回收时只有少量对象…...
Dify本地安装
目录 方式一docker安装: 方式二源码安装: Dify本地安装可以用docker方式,和源码编译方式。 先到云厂商平台申请一台Centos系统云主机,网络选择海外,需要公网IP,再按一下流程操作: 方式一doc…...
AISMM模型落地预算规划全流程(2024财年头部企业已验证的7大关键控制点)
更多请点击: https://intelliparadigm.com 第一章:AISMM模型与预算规划融合的底层逻辑 AISMM(Adaptive Intelligent Strategic Management Model)并非传统静态框架,而是一个以实时反馈、多源数据协同与动态权重调整为…...
C++ typename auto 彻底讲透:核心作用、推导规则、避坑指南
本文属于C typename & autod ,上一篇我们讲透了模板进阶的非类型参数、特化与分离编译,今天我们拆解两个最常用但最容易被误解的关键字 ——typename 和 auto。很多 C 开发者每天都在写 template 和 auto it v.begin(); 但很少有人能彻…...
快递保价理赔程序,货物价值上链,丢失破损,按约定自动赔付。
一、实际应用场景描述在快递与物流场景中,用户对高价值物品(如电子产品、艺术品、仪器配件)通常会选择保价服务。典型流程包括:- 寄件人申报货物价值- 支付保价费用- 出现丢失或破损后申请理赔- 平台人工审核并赔付在传统模式下&a…...
基于MCP协议的AI项目协作平台z3rno-mcp实战指南
1. 项目概述:一个AI驱动的开源协作平台最近在GitHub上看到一个挺有意思的项目,叫the-ai-project-co/z3rno-mcp。光看这个名字,可能有点摸不着头脑,但点进去研究了一下,发现它其实是一个围绕“AI项目协作”这个核心场景…...
如何用CellProfiler实现高通量细胞图像分析:从预处理到定量测量的完整实战指南
如何用CellProfiler实现高通量细胞图像分析:从预处理到定量测量的完整实战指南 【免费下载链接】CellProfiler An open-source application for biological image analysis 项目地址: https://gitcode.com/gh_mirrors/ce/CellProfiler CellProfiler是一款专为…...
事件驱动架构中的状态机模式:ralph-loop实现异步工作流管理
1. 项目概述:一个“自循环”的Ralph最近在折腾数据管道和API集成时,我遇到了一个挺有意思的项目:Endogen/ralph-loop。乍一看名字,你可能会有点懵,ralph?这不是个名字吗?怎么还“loop”上了&…...
割草机器人行业市场分析报告【5】- 政策、标准与合规环境
第5章:政策、标准与合规环境 5.1 各国环保政策、燃油设备禁令时间表 环保政策与燃油禁令是驱动割草机器人需求的结构性力量,其影响力正在加速显现。...
达梦数据库修改参数方法
一般用sp_set_para_value()修改新版本达梦支持alter system修改,很类似oracle的命令具体语法树尝试一下 19:42:34 SYSDBALOCALHOST:5236> alter system set dmsql_et_cnt50000 spfile; DMSQL 过程已成功完成 已用时间: 11.967(毫秒). 执行号:13217. 19:42:48 SY…...
本地AI语音识别技术突破:LocalVocal在OBS中的隐私优先实时字幕解决方案
本地AI语音识别技术突破:LocalVocal在OBS中的隐私优先实时字幕解决方案 【免费下载链接】obs-localvocal OBS plugin for local speech recognition and captioning using AI 项目地址: https://gitcode.com/gh_mirrors/ob/obs-localvocal 在当今内容创作和直…...
基于MCP协议构建AI数据桥梁:从原理到TypeScript服务器实战
1. 项目概述:一个为AI应用提供结构化数据访问的桥梁最近在折腾AI应用开发,特别是想让大语言模型(LLM)能更“聪明”地处理我手头那些五花八门的数据源时,遇到了一个典型痛点:模型本身并不直接“理解”数据库…...
