Array.prototype.join()

Baseline 已广泛支持

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

join() 方法是 Array 实例的一个方法,它通过将数组中的所有元素连接成一个字符串,并由逗号或指定的字符串分隔,来创建并返回一个新的字符串。如果数组只有一个元素,则只返回该元素,不使用分隔符。

试一试

const elements = ["Fire", "Air", "Water"];

console.log(elements.join());
// Expected output: "Fire,Air,Water"

console.log(elements.join(""));
// Expected output: "FireAirWater"

console.log(elements.join("-"));
// Expected output: "Fire-Air-Water"

语法

js
join()
join(separator)

参数

separator 可选

用于分隔数组中相邻元素对的字符串。如果省略,数组元素将使用逗号(",")分隔。

返回值

所有数组元素连接而成的字符串。如果 array.length0,则返回空字符串。

描述

所有数组元素的字符串表示形式连接成一个字符串。如果元素是 undefinednull,则将其转换为空字符串,而不是字符串 "null""undefined"

join 方法由 Array.prototype.toString() 在内部调用,不带任何参数。覆盖数组实例的 join 方法也会覆盖其 toString 的行为。

Array.prototype.join 会递归地将每个元素(包括其他数组)转换为字符串。由于 Array.prototype.toString 返回的字符串(与调用 join() 相同)没有分隔符,嵌套的数组看起来就像被展平了一样。你只能控制第一层的分隔符,更深层的嵌套数组始终使用默认的逗号。

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

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

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

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

稀疏数组 上使用时,join() 方法会将空槽视为具有 undefined 值进行迭代。

join() 方法是 通用的。它只期望 this 值具有 length 属性和整数键属性。

示例

四种不同的连接数组方式

以下示例创建一个包含三个元素的数组 a,然后将该数组连接四次:使用默认分隔符,然后是逗号和空格,然后是加号,最后是空字符串。

js
const a = ["Wind", "Water", "Fire"];
a.join(); // 'Wind,Water,Fire'
a.join(", "); // 'Wind, Water, Fire'
a.join(" + "); // 'Wind + Water + Fire'
a.join(""); // 'WindWaterFire'

在稀疏数组上使用 join()

join() 将空槽视为 undefined,并产生额外的分隔符

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

在非数组对象上调用 join()

join() 方法读取 thislength 属性,然后访问键小于 length 的所有非负整数键的属性。

js
const arrayLike = {
  length: 3,
  0: 2,
  1: 3,
  2: 4,
  3: 5, // ignored by join() since length is 3
};
console.log(Array.prototype.join.call(arrayLike));
// 2,3,4
console.log(Array.prototype.join.call(arrayLike, "."));
// 2.3.4

规范

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

浏览器兼容性

另见