繁体   English   中英

如何将包含符号的数组转换为字符串?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM