Array.prototype.toString()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức toString() của các đối tượng Array trả về một chuỗi đại diện cho mảng được chỉ định và các phần tử của nó.
Try it
const array = [1, 2, "a", "1a"];
console.log(array.toString());
// Expected output: "1,2,a,1a"
Cú pháp
toString()
Tham số
Không có.
Giá trị trả về
Một chuỗi đại diện cho các phần tử của mảng.
Mô tả
Đối tượng Array ghi đè phương thức toString của Object. Phương thức toString của mảng gọi nội bộ join(), nối mảng và trả về một chuỗi chứa mỗi phần tử mảng được phân tách bằng dấu phẩy. Nếu phương thức join không khả dụng hoặc không phải là hàm, Object.prototype.toString được dùng thay thế, trả về [object Array].
const arr = [];
arr.join = 1; // re-assign `join` with a non-function
console.log(arr.toString()); // [object Array]
console.log(Array.prototype.toString.call({ join: () => 1 })); // 1
JavaScript tự động gọi phương thức toString khi mảng cần được biểu diễn dưới dạng giá trị văn bản hoặc khi mảng được tham chiếu trong phép ghép chuỗi.
Array.prototype.toString đệ quy chuyển đổi từng phần tử, bao gồm cả các mảng khác, thành chuỗi. Vì chuỗi được trả về bởi Array.prototype.toString không có dấu phân cách, các mảng lồng nhau trông như thể chúng được làm phẳng.
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
console.log(matrix.toString()); // 1,2,3,4,5,6,7,8,9
Khi mảng có chu kỳ (chứa phần tử là chính nó), các trình duyệt tránh đệ quy vô hạn bằng cách bỏ qua tham chiếu chu kỳ.
const arr = [];
arr.push(1, [3, arr, 4], 2);
console.log(arr.toString()); // 1,3,,4,2
Ví dụ
>Sử dụng toString()
const array = [1, 2, "a", "1a"];
console.log(array.toString()); // "1,2,a,1a"
Sử dụng toString() trên mảng thưa
Theo hành vi của join(), toString() xử lý các vị trí trống giống như undefined và tạo ra dấu phân cách thừa:
console.log([1, , 3].toString()); // '1,,3'
Gọi toString() trên đối tượng không phải mảng
toString() là phương thức tổng quát. Nó yêu cầu this có phương thức join(); hoặc nếu không có, sẽ dùng Object.prototype.toString() thay thế.
console.log(Array.prototype.toString.call({ join: () => 1 }));
// 1; a number
console.log(Array.prototype.toString.call({ join: () => undefined }));
// undefined
console.log(Array.prototype.toString.call({ join: "not function" }));
// "[object Object]"
Thông số kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.tostring> |