JavaScript 数组和字符串9个同名方法对比
同名方法概览
JavaScript 中数组和字符串有以下同名方法:
-
at() - 索引访问(ES2022)
-
concat() - 连接操作
-
includes() - 检查包含性
-
indexOf() - 查找位置
-
lastIndexOf() - 反向查找位置
-
slice() - 提取片段
-
toString() - 转换为字符串
-
toLocaleString()
-
valueOf() - 返回原始值
表格总结

行为相同的方法
以下方法在数组和字符串中的行为基本一致:
- at()-在数组和字符串中的行为完全相同
- concat() - 都是连接操作,返回新值,不修改原值
- includes() - 都是检查包含性,返回布尔值
- indexOf() - 都是查找位置,返回索引或 -1
- lastIndexOf() - 都是从后向前查找位置
- slice() - 都是提取片段,返回新值
行为有差异的方法
以下方法虽然同名,但在细节上有所不同:
- toString() - 数组会格式化输出,字符串返回本身
- valueOf() - 数组返回数组引用,字符串返回字符串值
新增的 at() 方法(ES2022)
-
数组:
arr.at(index)- 通过索引访问元素,支持负数 -
字符串:
str.at(index)- 通过索引访问字符,支持负数
at() 方法特点
-
支持负索引:-1 表示最后一个元素,-2 表示倒数第二个
-
越界安全:索引超出范围时返回
undefined,不会报错 -
语法简洁:比
arr[arr.length - 1]更直观 -
行为一致:在数组和字符串中的行为完全相同
补充:toLocaleString()
toLocaleString() 将数组元素转换为本地化的字符串表示形式。
JavaScript 字符串拥有 toLocaleString() 方法,但这个方法是从 Object.prototype 继承而来的。
继承关系:
在JavaScript中,所有对象都继承自 Object.prototype
String 对象也不例外,它继承了 Object.prototype 上的所有方法
因此,字符串(包括字符串对象和字符串原始值)都有 toLocaleString() 方法
String.prototype.toLocaleString() 的行为:
对于字符串来说,toLocaleString() 方法与 toString() 方法的行为基本相同
它不会像 Number 或 Date 对象那样进行本地化格式化
它只是简单地返回字符串本身
更多推荐


所有评论(0)