在JavaScript的toString()中添加不同的分隔符?

34

通常情况下,JavaScript的toString()方法会将数组以逗号分隔的形式返回,如下所示:

 var myArray = [ 'zero', 'one', 'two', 'three', 'four', 'five' ];
 var result = myArray .toString();

它返回的输出如下所示zero,one,two,three,four,five

但我有一个要求,需要以这种格式表示结果zero_one_two_three_four_five(用_替换逗号)。

我知道我们可以在将数组转换为字符串后使用replace方法来实现这一点。是否有更好的替代方案?

干杯

Ramesh Vel

4个回答

67

使用myArray.join('_')应该可以满足您的需求。


谢谢edeverett..我应该先阅读JavaScript基础知识... :( - RameshVel
3
没问题,这就是 Stack Overflow 的用处。好的一点是回答没花太长时间写出来 :-) - edeverett
有没有一种方法可以不使用.join()来完成这个任务? - ConstantFun

14
使用join方法,可以使用指定的分隔符连接元素:
myArray.join("_")

3
为了展示它是可行的,并回答问题的标题(但不是精神),没有其他任何目的:
<pre>
<script type="text/javascript">
Array.prototype.toStringDefault = Array.prototype.toString;
Array.prototype.toString = function (delim) {
    if ('undefined' === typeof delim) {
        return this.toStringDefault();
    }
    return this.join(delim);
}
var myArray = [ 'zero', 'one', 'two', 'three', 'four', 'five' ];
var result1 = myArray.toString('_');
document.writeln(result1);
var result2 = myArray.toString();
document.writeln(result2);
</script>
</pre>

我不建议这样做。这会使你的代码更加复杂,并且依赖于扩展 Array 上的 toString() 功能所需的代码。使用 Array.join() 是正确的答案,我只是想展示 JavaScript 可以被修改来完成最初的要求。


1
Grant Wagner的答案在数组是多维的时候很有用。

取出这个数组。

[['Mary','Had'],['A','Little'],['lamb', 'and']]

如果您使用 Array.join('_') 方法,则结果将类似于:
Mary,Had_A,Little_lamb,and

由于join方法使用.toString()方法来组装主数组中的每个元素,并且默认使用逗号分隔符。

但是,更改Array.toString()方法将产生所需的结果。


请不要将Array.toString更改为其他内容并在其他地方冒险破坏事物,如果您知道您的数据将是这种形状,请只需执行myArray.flat().join('_')。 - Leyla Becker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接