Array.prototype.join()

基线 广泛可用

此功能已得到良好建立,并且可在许多设备和浏览器版本中使用。它自以下时间起在所有浏览器中都可用 2015 年 7 月.

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

试一试

语法

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 语言规范
# sec-array.prototype.join

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅