Array.prototype.join()
join()
方法是 Array
实例的方法,它通过连接此数组中的所有元素来创建并返回一个新字符串,元素之间用逗号或指定的分割符字符串分隔。如果数组只有一个项目,则返回该项目而不使用分隔符。
试一试
语法
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 语言规范 # sec-array.prototype.join |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。