[英]How to convert array containing a Symbol to string?
我有一個可以包含 Symbol() 項的數組。 Array.toSring 帶來了一個異常。
const s = [10, 'abc', Symbol('test')].toString(); // this throws an exception console.log([10, 'abc', Symbol('test')]); // this works
將此類數組轉換為字符串的最佳方法是什么(如 console.log 所做的)?
.map
數組,首先在每個符號上調用toString
:
const s = [10, 'abc', Symbol('test')].map(val => typeof val === 'symbol'? val.toString(): val).join(','); console.log(s);
要將符號轉換為字符串,您必須明確地這樣做。
允許對符號調用toString
,因為這會調用Symbol.prototype.toString() 。
相反,嘗試將 Symbol 隱式轉換為字符串,例如使用Array.prototype.join
(或Array.prototype.toString
,內部調用Array.prototype.join
或+
等),調用ToString操作,該操作當參數是符號時拋出。
只需將符號轉換為字符串,而不是轉換整個數組
const s = [10, 'abc', Symbol('test').toString];
你能在數組上調用 before.toString() 之前對數組做一個小操作嗎? 像這樣的東西:
function myFunction() {
var fruits = [10, 'abc', Symbol('test')];
var test = [];
for(item of fruits){
if(typeof(item) === "symbol"){
test.push(item.toString());
}
else{test.push(item)}
}
var x = test.toString();
問題是我們不想在數組的每個項目上調用.toString() 方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.