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

【前端(十三)】JavaScript 数组与字符串笔记

文章目录JavaScript 数组与字符串笔记一、数组Array1.1 定义1.2 特点1.3 查询与索引访问1.4 修改与赋值1.5 length 属性与 empty1.6 删除元素1.7 常用方法精讲 添加元素 截取与合并 查找元素 遍历 排序与反转 数组转字符串二、字符串String2.1 定义2.2 特点2.3 索引访问只读2.4 拼接与模板字符串2.5 常用方法精讲 截取 查找与判断 修改生成新串 分割与拼接 填充三、JavaScript 与 Java 核心差异对比JavaScript 数组与字符串笔记一、数组Array1.1 定义语法格式// 字面量推荐let数组名[元素1,元素2,...];// 构造函数了解let数组名newArray();// 空数组let数组名newArray(长度);// 稀疏数组全是 emptylet数组名newArray(值1,值2,...);// 等价于字面量例子letnums[10,20,30];letmix[1,hello,true,{name:Tom}];// 混合类型1.2 特点无类型限制同一个数组可存放任意类型的元素。动态长度自动伸缩length属性可读写。索引从 0 开始越界访问不会抛出异常返回undefined。1.3 查询与索引访问直接使用[ ]获取元素支持at()负索引letarr[10,20,30];console.log(arr[0]);// 10console.log(arr[5]);// undefined 不抛异常console.log(arr.at(-1));// 301.4 修改与赋值赋值可修改已有元素也可扩容数组。letarr[1,2,3];// 修改索引在 length 范围内arr[1]100;// 改变原数组[1, 100, 3]// 扩容赋值索引 ≥ lengtharr[5]hello;// 改变原数组[1, 100, 3, empty × 2, hello]// length 变为 6修改索引位于0 ~ length-1直接覆盖原值。扩容赋值索引 ≥length数组自动扩展中间未赋值的索引成为empty。1.5 length 属性与 emptylength可直接修改来截断或扩展数组letarr[1,2,3,4,5];console.log(arr.length);// 5// 减小 length → 截断数组arr.length2;console.log(arr);// [1, 2]// 增大 length → 增加空位arr.length5;console.log(arr);// [1, 2, empty × 3]什么是 emptyempty不是undefined不是null也不是0它表示数组中的空位hole。访问空位时会返回undefined但这两者并不相等empty是“没有值”的占位遍历时会被跳过undefined是一个真实的值遍历时不会被跳过leta[1,,3];// 中间是一个 emptyconsole.log(a[1]);// undefineda.forEach(vconsole.log(v));// 输出 1 和 3跳过空位letb[1,undefined,3];b.forEach(vconsole.log(v));// 输出 1、undefined、31.6 删除元素方法描述是否改变原数组示例与结果delete arr[i]删除指定索引值留下 empty是length 不变delete arr[1]→[1, empty, 3]splice(start, n)删除从 start 开始的 n 个元素是arr.splice(1,2)→ 删除并返回被删元素数组pop()删除最后一个元素返回该元素是arr.pop()shift()删除第一个元素返回该元素是arr.shift()⚠️ 日常开发中用splice、pop、shift执行真正删除避免delete造成稀疏数组。letarr[a,b,c,d];deletearr[1];// 变成 [a, empty, c, d]不推荐arr.splice(1,2);// 从索引1删2个变成 [a, d]arr.pop();// 移除 darr.shift();// 移除 a1.7 常用方法精讲 添加元素方法描述是否改变原数组push(...items)末尾添加返回新 length是unshift(...items)开头添加返回新 length是letarr[2,3];arr.push(4);// arr 变成 [2,3,4]arr.unshift(1);// arr 变成 [1,2,3,4] 截取与合并方法描述是否改变原数组slice(start, end)浅拷贝一段返回新数组❌ 否splice(start, n, ...items)删除/插入/替换万能修改器是letarr[1,2,3,4];letsubarr.slice(1,3);// 返回 [2, 3]arr 不变arr.splice(1,2,a);// arr 变成 [1, a, 4] 查找元素方法描述是否改变原数组indexOf(item)严格相等查找返回索引-1 找不到❌ 否includes(item)是否包含返回 boolean❌ 否find(callback)返回第一个满足条件的元素❌ 否letarr[10,20,30];arr.indexOf(20);// 1arr.includes(40);// falsearr.find(xx15);// 20 遍历方法描述是否改变原数组forEach(callback)对每个元素执行回调无返回值❌ 不改变原数组但回调内可修改元素letarr[1,2,3];arr.forEach((v,i)console.log(i,v));// 输出 0 1, 1 2, 2 3// arr 本身不变除非在回调中赋值 arr[i]... 排序与反转方法描述是否改变原数组sort(compareFn)排序默认按字符串顺序是reverse()反转顺序是letarr[1,2,10];arr.sort();// [1, 10, 2]字符串排序arr.sort((a,b)a-b);// [1, 2, 10]数字升序arr.reverse();// [10, 2, 1] 数组转字符串方法描述是否改变原数组join(分隔符)将数组用分隔符连接成字符串❌ 否toString()默认用逗号连接❌ 否[1,2,3].join(-);// 1-2-3[1,2,3].toString();// 1,2,3二、字符串String2.1 定义lets1hello;lets2world;lets3模板字符串;// 支持多行与嵌入变量2.2 特点不可变任何操作都返回新字符串原字符串不会改变。类数组索引可用[index]或charAt(index)读取单个字符但只能读。2.3 索引访问只读letstrJavaScript;console.log(str[0]);// Jconsole.log(str[10]);// undefinedstr[0]j;// 无效str 不变2.4 拼接与模板字符串传统拼接使用运算符letresultHello, name!;模板字符串使用反引号支持多行字符串直接换行即可变量或表达式用${}嵌入。letmulti第一行 第二行;// 保留换行2.5 常用方法精讲 截取方法描述返回slice(start, end)截取 [start, end)支持负索引新字符串letsJavaScript;s.slice(0,4);// Javas.slice(-6);// Script从倒数第6到末尾 查找与判断方法描述返回indexOf(sub)查找子串首次出现位置索引或 -1includes(sub)判断是否包含子串booleanstartsWith(sub)是否以 sub 开头booleanendsWith(sub)是否以 sub 结尾booleanletshello world;s.indexOf(o);// 4s.includes(world);// trues.startsWith(he);// true 修改生成新串方法描述返回replace(old, new)替换第一个匹配可用正则全局替换新字符串replaceAll(old, new)替换所有匹配新字符串toLowerCase()全小写新字符串toUpperCase()全大写新字符串trim()去除两端空格新字符串lets JS ;s.trim();// JSapple, apple.replaceAll(apple,orange);// orange, orange 分割与拼接方法描述返回split(分隔符)将字符串拆为数组数组数组的join()将数组拼回字符串字符串2025-01-01.split(-);// [2025,01,01][a,b,c].join();// abc 填充方法描述返回padStart(len, str)在前填充至指定长度新字符串padEnd(len, str)在后填充至指定长度新字符串5.padStart(3,0);// 005ab.padEnd(5,!);// ab!!!三、JavaScript 与 Java 核心差异对比对比维度JavaScriptJava数组类型元素可混合无固定类型强类型元素必须同一类型数组长度动态伸缩length属性可读写长度固定length只读越界访问返回undefined不抛异常抛出ArrayIndexOutOfBoundsException直接索引赋值扩容支持索引≥length 时自动扩容不支持只能修改现有索引数组删除splice、pop、shift直接删除无内置直接删除需用集合类字符串不可变性是所有操作返回新串是String不可变字符访问str[i]直接读只读必须charAt(i)字符串比较直接比值equals()比较内容比较引用数组排序默认按字符串排序基本类型自然排序对象需Comparator内容相等数组内容比较不能直接用Arrays.equals()深度比较以上为个人学习总结旨在梳理个人理解。如有疏漏或不当之处欢迎指正与交流。

相关文章:

【前端(十三)】JavaScript 数组与字符串笔记

文章目录JavaScript 数组与字符串笔记一、数组(Array)1.1 定义1.2 特点1.3 查询与索引访问1.4 修改与赋值1.5 length 属性与 empty1.6 删除元素1.7 常用方法精讲📌 添加元素📌 截取与合并📌 查找元素📌 遍历…...

【边缘AI场景Docker调优白皮书】:基于Raspberry Pi 5/JeVois-Bin/NVIDIA Jetson实测数据的12项关键参数配置清单

更多请点击: https://intelliparadigm.com 第一章:边缘AI场景下Docker容器化部署的独特挑战 在资源受限、网络不稳、硬件异构的边缘设备上运行AI推理服务,Docker虽提供标准化封装能力,却暴露出一系列深层矛盾。传统云原生容器设计…...

PX4 Autopilot系统调用架构:从实时通信到智能控制的深度解析

PX4 Autopilot系统调用架构:从实时通信到智能控制的深度解析 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 在无人机开发领域,开发人员常常面临一个核心挑战:如…...

MXFP4量化技术提升LLM推理性能与精度

1. 项目背景与核心价值在大型语言模型(LLM)部署的实际场景中,模型量化技术一直是平衡计算资源消耗与推理性能的关键手段。传统FP4(4位浮点)量化虽然能显著减少模型体积,但在处理复杂语义任务时经常出现精度…...

别再死记硬背了!用Multisim仿真带你直观理解运放负反馈的三大魔法(增益、带宽、阻抗)

别再死记硬背了!用Multisim仿真带你直观理解运放负反馈的三大魔法(增益、带宽、阻抗) 第一次接触运算放大器负反馈时,我盯着课本上那些晦涩的公式和抽象的理论推导,感觉就像在看天书。"增益灵敏度降低"、&qu…...

程序化噪声在游戏开发中的应用:从Perlin到Shader实战

1. 项目概述:当游戏世界开始“呼吸”如果你是一位游戏开发者,或者对计算机图形学有浓厚兴趣,那么“噪声”这个词对你来说一定不陌生。它绝不仅仅是屏幕上恼人的雪花点,恰恰相反,它是构建数字世界“生命力”与“真实感”…...

从实践中提炼的架构设计与工程规范

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...

告别Diskpart恐惧症:手把手教你用命令行安全合并U盘分区(附完整命令清单)

命令行艺术:彻底掌握Diskpart合并U盘分区的底层逻辑 你是否遇到过这样的场景——插入U盘后系统提示需要格式化,打开磁盘管理工具却发现原本单一的存储空间被分割成多个陌生分区?这种"分区幽灵"现象往往让普通用户手足无措&#xff…...

从Vaadin 14到Vaadin 24的迁移:解决内存泄漏问题

引言 在现代Web应用开发中,迁移到新的版本是常见的需求。最近,我们将一个基于Spring Boot的Vaadin应用从版本14升级到了版本24,同时也保留了之前使用的Keycloak和OAuth2登录功能。然而,在这个迁移过程中,我们遇到了一个令人头疼的问题——内存泄漏。特别是在应用程序启动…...

3分钟快速上手:DamaiHelper大麦网抢票脚本完整指南

3分钟快速上手:DamaiHelper大麦网抢票脚本完整指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 想要告别演唱会陪跑,轻松抢到心仪的门票吗?DamaiHelper大麦…...

终极PC多人游戏解决方案:Nucleus Co-Op分屏工具完全指南

终极PC多人游戏解决方案:Nucleus Co-Op分屏工具完全指南 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否曾梦想过与好友在同一台…...

如何在 MATLAB 中调用 Taotoken 聚合的大模型 API 接口

如何在 MATLAB 中调用 Taotoken 聚合的大模型 API 接口 1. 准备工作 在 MATLAB 中调用 Taotoken 的大模型 API 接口前,需要确保具备以下条件: 有效的 Taotoken API Key,可在 Taotoken 控制台中创建。目标模型 ID,可在 Taotoken…...

解决iOS Safari上的SVG动画问题

引言 在移动设备上实现交互式SVG动画时,常常会遇到一些特定的挑战,尤其是对于iOS的Safari浏览器。本文将探讨如何解决在iOS Safari中SVG元素点击时无法触发淡入动画的问题,并提供一个实用的JavaScript解决方案。 背景介绍 最近我遇到一个问题,当在iOS Safari中点击SVG元…...

2025终极解决方案:八大网盘直链下载助手完整使用指南

2025终极解决方案:八大网盘直链下载助手完整使用指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...

深度解构:如何基于PX4-Autopilot构建高性能无人机控制系统

深度解构:如何基于PX4-Autopilot构建高性能无人机控制系统 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 在无人机系统开发中,实时性、可靠性和扩展性一直是开发团队面临的…...

基于容器与Seccomp的代码沙盒安全实践:以dify-sandbox为例

1. 项目概述:构建一个安全的代码沙盒环境在构建一个多租户的AI应用平台或在线代码评测系统时,一个核心且棘手的问题是如何安全地执行用户提交的、不可信的代码。直接在生产服务器上运行这些代码无异于敞开大门,恶意代码可以轻易地耗尽系统资源…...

开发者如何利用 Taotoken 快速切换模型以应对不同场景需求

开发者如何利用 Taotoken 快速切换模型以应对不同场景需求 1. 多模型统一接入的价值 在构建多功能 AI 应用时,开发者常面临模型选型与接入的复杂性。不同场景对模型能力的需求各异:对话交互可能需要更强的上下文理解,代码生成需要编程语言的…...

初次使用 Taotoken 模型广场进行模型选型与对比的体验

初次使用 Taotoken 模型广场进行模型选型与对比的体验 1. 模型广场概览 登录 Taotoken 控制台后,左侧导航栏的"模型广场"入口非常醒目。页面加载后,首先看到的是按热门程度排序的模型列表,每个卡片展示了模型名称、提供商、简要描…...

正点原子IMX6ULL SR04模块+Qt使用

本篇文章用于记录在使用正点原子开发板进行自主开发时使用SR04模块完成倒车雷达辅助功能遇到的问题及延伸问题,文章重点在于记录!问题还待解决问题背景:想要实现sr04的模块驱动且配合Qt应用程序完成倒车雷达辅助功能但是在过程中发现 1.当前系…...

保姆级避坑指南:用PX4 v1.12.3 + Gazebo搞定Offboard模式,解决‘Vehicle armed’失败问题

PX4 v1.12.3与Gazebo仿真环境深度调优:从Offboard模式解锁到轨迹飞行的全流程实战 去年夏天,当我第一次尝试用PX4的Offboard模式控制Gazebo中的无人机时,遇到了一个令人抓狂的问题——终端不断显示"Offboard enabled",但…...

ai赋能:让快马智能生成虚拟化环境配置方案

最近在折腾虚拟化环境配置时,发现每次手动设置VMware虚拟机参数特别耗时。特别是需要反复创建不同用途的测试环境时,光是调整内存、磁盘这些基础配置就要花半天时间。后来尝试用InsCode(快马)平台的AI辅助功能,意外发现能大幅简化这个流程。 …...

告别复制粘贴!用CAPL脚本在CANoe里实现自动化测试(附完整代码示例)

告别复制粘贴!用CAPL脚本在CANoe里实现自动化测试(附完整代码示例) 在汽车电子测试领域,重复性工作往往占据了工程师大量时间。想象一下这样的场景:每天需要手动发送相同的CAN报文序列,记录ECU响应&#xf…...

实战应用:从需求到成品,用快马开发并部署win11桌面图标管理软件

今天想和大家分享一个实用小工具的完整开发过程——Windows 11桌面图标管理软件。起因是我发现很多朋友升级Win11后找不到"我的电脑"图标,网上教程又分散,于是决定做个一站式解决方案。 需求分析与功能设计 这个工具主要解决三个痛点&#xf…...

STM32H750内存不够用?实战修改CubeIDE链接脚本,把代码塞进ITCM/DTCM提速

STM32H750内存优化实战:巧用ITCM/DTCM提升关键代码性能 当你的STM32H750项目因为内存不足而频繁崩溃,或是关键函数执行速度拖累整体性能时,你可能已经触碰到这颗高性能MCU的潜力边界。但别急着换芯片——通过精心调整链接脚本,我们…...

微信聊天记录如何永久保存?这款开源工具让你的数字记忆不再丢失

微信聊天记录如何永久保存?这款开源工具让你的数字记忆不再丢失 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending…...

鸣潮智能自动化助手ok-ww:告别重复劳动,重拾游戏乐趣

鸣潮智能自动化助手ok-ww:告别重复劳动,重拾游戏乐趣 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否…...

TMS320F28xxx开发踩坑记:手把手教你解决#10099-D内存溢出报错(附链接器脚本修改)

TMS320F28xxx开发实战:深度解析#10099-D内存溢出与链接器脚本优化 深夜的实验室里,CCS编译器的报错提示格外刺眼——"#10099-D program will not fit into available memory"。这个看似简单的内存溢出错误,背后却隐藏着DSP开发中最…...

Marp终极指南:5分钟学会用Markdown制作专业PPT

Marp终极指南:5分钟学会用Markdown制作专业PPT 【免费下载链接】marp The entrance repository of Markdown presentation ecosystem 项目地址: https://gitcode.com/gh_mirrors/mar/marp 你是否厌倦了复杂的PPT软件,想要一种更高效的方式来创建演…...

娱乐圈天降紫微星不靠捧,海棠山铁哥复刻历史帝王草根崛起

内娱最荒谬的乱象把“资本强捧”当成“天降紫微星”的捷径。01|捷径假星资本三板斧流量三板斧经纪公司砸钱平台热搜锁定金主爸爸背书饭圈控评洗版大制作资源投喂营销号统一话术 只要吹捧到位、资源喂够,就能掩盖实力匮乏与格局缺失? —— 他们…...

Node.js京东自动下单工具完整指南:告别手动抢购烦恼

Node.js京东自动下单工具完整指南:告别手动抢购烦恼 【免费下载链接】jd-happy [DEPRECATED]Node 爬虫,监控京东商品到货,并实现下单服务 项目地址: https://gitcode.com/gh_mirrors/jd/jd-happy 还在为京东热门商品秒光而烦恼吗&…...