【前端(十三)】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()深度比较以上为个人学习总结旨在梳理个人理解。如有疏漏或不当之处欢迎指正与交流。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2588217.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!