在JavaScript开发中,数组转字符串是高频操作,不同的转换方法对应不同的使用场景,返回的结果也存在差异,掌握这些方法能更高效地完成数据处理工作。

使用toString方法转换
数组的toString方法是内置的转换方法,调用后会把数组中的每个元素转换为字符串,再用逗号分隔拼接成一个整体字符串。如果数组元素是对象,会先调用对象的toString方法再拼接。
// 基础数组转换
let arr1 = [1, 2, 3, 'hello'];
let str1 = arr1.toString();
console.log(str1); // 输出:1,2,3,hello
// 嵌套数组转换
let arr2 = [1, [2, 3], 4];
let str2 = arr2.toString();
console.log(str2); // 输出:1,2,3,4,嵌套数组会被扁平化后拼接
// 包含对象的数组转换
let arr3 = [{name: 'test'}, 2];
let str3 = arr3.toString();
console.log(str3); // 输出:[object Object],2,对象默认toString返回[object Object]使用join方法转换
join方法可以指定分隔符来拼接数组元素,比toString更灵活。如果不传入参数,默认使用逗号作为分隔符,效果和toString一致。如果传入空字符串,会把所有元素直接拼接,没有分隔符。
let arr = ['a', 'b', 'c', 123];
// 默认分隔符(逗号)
let str1 = arr.join();
console.log(str1); // 输出:a,b,c,123
// 指定分隔符为短横线
let str2 = arr.join('-');
console.log(str2); // 输出:a-b-c-123
// 指定空字符串作为分隔符
let str3 = arr.join('');
console.log(str3); // 输出:abc123
// 数组包含null或undefined,会被转换为空字符串
let arr2 = ['a', null, undefined, 'b'];
let str4 = arr2.join(',');
console.log(str4); // 输出:a,,b使用JSON.stringify方法转换
JSON.stringify方法会把数组转换为符合JSON格式的字符串,保留数组的结构,包括嵌套关系和元素类型,和前两种方法的扁平化拼接逻辑完全不同,适合需要保留数组完整结构的场景。
let arr1 = [1, 'hello', true, [2, 3]];
let str1 = JSON.stringify(arr1);
console.log(str1); // 输出:[1,"hello",true,[2,3]],保留数组结构和元素类型
// 包含对象的数组转换
let arr2 = [{name: '张三', age: 20}, 'test'];
let str2 = JSON.stringify(arr2);
console.log(str2); // 输出:[{"name":"张三","age":20},"test"],对象会被序列化为JSON格式
// 可以传入第二个参数过滤需要转换的属性
let arr3 = [{name: '李四', age: 25, gender: '男'}];
let str3 = JSON.stringify(arr3, ['name', 'age']);
console.log(str3); // 输出:[{"name":"李四","age":25}],只保留name和age属性不同方法的选择建议
可以根据实际需求选择合适的方法:
- 如果只是需要简单把数组元素用逗号拼接成字符串,优先使用
toString或者join(),写法更简洁。 - 如果需要自定义分隔符,或者需要处理空分隔符的场景,使用
join方法更合适。 - 如果需要保留数组的嵌套结构、元素类型,或者需要把数组作为JSON格式字符串传递,使用
JSON.stringify方法。
| 方法 | 分隔符 | 是否保留数组结构 | 适用场景 |
|---|---|---|---|
| toString | 固定逗号 | 否,会扁平化嵌套数组 | 简单拼接元素,不需要自定义分隔符 |
| join | 可自定义 | 否,会扁平化嵌套数组 | 需要自定义分隔符的拼接场景 |
| JSON.stringify | 无(保留JSON结构) | 是,保留嵌套和类型 | 需要保留数组完整结构,JSON格式传递 |
JavaScript数组转字符串toStringjoinJSON_stringify修改时间:2026-06-07 03:09:08