为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

三国纷争 2021-11-04 17:51:01
我有一个可以包含 Symbol() 项的数组。Array.toSring 带来了一个例外。const s = [10, 'abc', Symbol('test')].toString(); // this throws an exceptionconsole.log([10, 'abc', Symbol('test')]); // this works将此类数组转换为字符串的最佳方法是什么(如 console.log 所做的)?
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

只需将符号转换为字符串,而不是转换整个数组

const s = [10, 'abc', Symbol('test').toString];


查看完整回答
反对 回复 2021-11-04
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

.map数组,首先调用toString每个符号:


const s = [10, 'abc', Symbol('test')]

  .map(val => typeof val === 'symbol' ? val.toString() : val)

  .join(',');

console.log(s);


要将 Symbol 转换为字符串,您必须明确地这样做。


toString允许调用符号,因为它会调用Symbol.prototype.toString()。


相比之下,尝试将 Symbol 隐式转换为字符串,例如 with Array.prototype.join,(或Array.prototype.toString,内部调用Array.prototype.join, or+等),会调用ToString操作,当参数是 Symbol 时抛出该操作。


查看完整回答
反对 回复 2021-11-04
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

你能在数组上调用 .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() 方法。


查看完整回答
反对 回复 2021-11-04
  • 3 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信