Array.prototype.join()
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"
语法
join()
join(separator)
参数
separator可选-
用于分隔数组中相邻元素对的字符串。如果省略,数组元素将使用逗号(",")分隔。
返回值
所有数组元素连接而成的字符串。如果 array.length 为 0,则返回空字符串。
描述
所有数组元素的字符串表示形式连接成一个字符串。如果元素是 undefined 或 null,则将其转换为空字符串,而不是字符串 "null" 或 "undefined"。
join 方法由 Array.prototype.toString() 在内部调用,不带任何参数。覆盖数组实例的 join 方法也会覆盖其 toString 的行为。
Array.prototype.join 会递归地将每个元素(包括其他数组)转换为字符串。由于 Array.prototype.toString 返回的字符串(与调用 join() 相同)没有分隔符,嵌套的数组看起来就像被展平了一样。你只能控制第一层的分隔符,更深层的嵌套数组始终使用默认的逗号。
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
当数组包含循环引用(即数组中有一个元素是它自身)时,浏览器会通过忽略循环引用来避免无限递归。
const arr = [];
arr.push(1, [3, arr, 4], 2);
console.log(arr.join(";")); // 1;3,,4;2
在 稀疏数组 上使用时,join() 方法会将空槽视为具有 undefined 值进行迭代。
join() 方法是 通用的。它只期望 this 值具有 length 属性和整数键属性。
示例
四种不同的连接数组方式
以下示例创建一个包含三个元素的数组 a,然后将该数组连接四次:使用默认分隔符,然后是逗号和空格,然后是加号,最后是空字符串。
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,并产生额外的分隔符
console.log([1, , 3].join()); // '1,,3'
console.log([1, undefined, 3].join()); // '1,,3'
在非数组对象上调用 join()
join() 方法读取 this 的 length 属性,然后访问键小于 length 的所有非负整数键的属性。
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 |
浏览器兼容性
加载中…