Array.prototype.toString()

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

toString() 方法 Array 实例返回一个字符串,表示指定的数组及其元素。

试一试

const array = [1, 2, "a", "1a"];

console.log(array.toString());
// Expected output: "1,2,a,1a"

语法

js
toString()

参数

无。

返回值

表示数组元素的字符串。

描述

Array 对象覆盖了 ObjecttoString 方法。数组的 toString 方法内部调用 join(),该方法将数组连接起来,并返回一个包含由逗号分隔的每个数组元素的字符串。如果 join 方法不可用或不是函数,则改用 Object.prototype.toString,返回 [object Array]

js
const arr = [];
arr.join = 1; // re-assign `join` with a non-function
console.log(arr.toString()); // [object Array]

console.log(Array.prototype.toString.call({ join: () => 1 })); // 1

当数组需要表示为文本值或在字符串连接中引用数组时,JavaScript 会自动调用 toString 方法。

Array.prototype.toString 会递归地将每个元素(包括其他数组)转换为字符串。由于 Array.prototype.toString 返回的字符串没有分隔符,嵌套数组看起来像是被展平了。

js
const matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9],
];

console.log(matrix.toString()); // 1,2,3,4,5,6,7,8,9

当数组是循环引用(它包含一个自身作为元素的元素)时,浏览器会通过忽略循环引用来避免无限递归。

js
const arr = [];
arr.push(1, [3, arr, 4], 2);
console.log(arr.toString()); // 1,3,,4,2

示例

使用 toString()

js
const array = [1, 2, "a", "1a"];

console.log(array.toString()); // "1,2,a,1a"

对稀疏数组使用 toString()

遵循 join() 的行为,toString() 将空槽视为 undefined 并产生额外的分隔符。

js
console.log([1, , 3].toString()); // '1,,3'

对非数组对象调用 toString()

toString()通用的。它期望 this 具有 join() 方法;否则,它将使用 Object.prototype.toString()

js
console.log(Array.prototype.toString.call({ join: () => 1 }));
// 1; a number
console.log(Array.prototype.toString.call({ join: () => undefined }));
// undefined
console.log(Array.prototype.toString.call({ join: "not function" }));
// "[object Object]"

规范

规范
ECMAScript® 2026 语言规范
# sec-array.prototype.tostring

浏览器兼容性

另见